首页 > 解决方案 > JavaScript 在第一个逗号处用空格分割字符串并忽略字符串的其余部分

问题描述

编辑:感谢您对此的输入,问题是初始输入字段通过谷歌自动完成接收字符串,并且更改无效....但是当我将其更改为提交表单时,字符串按预期截断。很大的帮助,下面的解决方案也很好用,谢谢。

我真的不知道为什么这不起作用,我已经测试了在这里找到的几个变体,但没有得到字符串的完整部分。

我有一个自动完成的输入字段,地址值用逗号分隔,即“街道值、城市值、州和邮政编码值、国家值”。

我正在使用 on change 函数将每个部分放入单独的字段中:

jQuery('input[name="location"]').on("change", function() {
  var location = jQuery('input[name="location"]').val();
  var street = location.split(',')[0];
  jQuery('input[name="street"]').val(street);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

但是,尽管“Street”的输入字段应该更新为例如“1234 Random Avenue”的值,但它在字段中只返回“1234”。因此,无论出于何种原因,在逗号之前的字符串中的第一个空格处截断,而不是根据需要包括第一个逗号分隔符之前的所有内容。我已经测试过使用[1]但没有区别......它在第一个空格之后不返回任何内容,而不是使用指定的逗号作为要使用的分隔符......

标签: javascriptsplit

解决方案


你能解释一下这个问题吗?

根据我对您的代码的理解,这是一个正确工作的 Codepen:

jQuery('input[name="location"]').on("change", function() {
  var location = jQuery('input[name="location"]').val();
  var parts = location.split(',');
  
  if(parts.length >= 1){
    var street = parts[0];
    jQuery('input[name="street"]').val(street)
  }
  if(parts.length >= 2) {
    var house = parts[1];
    jQuery('input[name="house"]').val(house);
  };
  
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" placeholder="location" name="location">
<input type="text" placeholder="street" name="street">
<input type="text" placeholder="house" name="house">


推荐阅读