如何从逗号分隔的数据中删除空值

时间:2016-05-18 07:21:23

标签: jquery

从动态文本框中获取值时遇到一些问题。我的文本框看起来像这样:

enter image description here

这是我获取值的HTML代码:

$('#pilihtambahan input[type=text]').each(function(index) {
    if (valData2 == "") {
        valData2 = valData2 + $(this).val();    
    } else {
        valData2 = valData2 + "," + $(this).val();  
    }
});

如果我在文本框“jumlah sewa showcase”中插入一个值为“1”并在“jumlah sewa灶”文本框中插入带有“2”的文本,结果将是这样的

1,<null>,2

我不知道要删除null值。我的目标是结果将是这样的

1,2

也许有人可以帮我解决这个问题。谢谢。

3 个答案:

答案 0 :(得分:3)

您可以在将值附加到字符串之前检查该值的length属性。

然而,更好的方法是使用map()然后join()将它们组合在一起构建值数组。由于空字符串值是假的,您可以在map()中使用三元表达式来返回所需的值或完全跳过它。试试这个:

var values = $('#pilihtambahan input[type=text]').map(function(index) {
    return this.value ? this.value : null;
}).get().join(',');

Working example

答案 1 :(得分:1)

查看$(this).val().length$(this).val()!=""

您修改后的代码为:

$('#pilihtambahan input[type=text]').each(function(index) {
      var val = $(this).val();
      if (val.length) {
        if (valData2 == "") {
          valData2 += valData2 + val;
        } else {
          valData2 = valData2 + "," + val;
        }
      }
});

OR

$('#pilihtambahan input[type=text]').each(function(index) {
      var val = $(this).val();
      if (val !="" && val!=null) {
        if (valData2 == "") {
          valData2 = valData2 + val;
        } else {
          valData2 = valData2 + "," + val;
        }
      }
});

为了增强你可以做的更多:

$('#pilihtambahan input[type=text]').each(function(index) {
      var val = $(this).val();
      if (val.length) {
        if (valData2 == "") {
          valData2 += val;
        } else {
          valData2 += "," + val;
        }
      }
});

答案 2 :(得分:1)

你去吧

$('.btn').on('click', function() {
  arr = [];
  $('input[type=text]').each(function() {
    var value = $(this).val();
    //if(value){
    if (value.length) {
      arr.push(value);
    }
  });

  console.log(arr);
  $('p').html(arr)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text">
<br />
<input type="text">
<br />
<input type="text">
<br />
<button class="btn">
  test
</button>
<p>

</p>