jQuery push数组插入逗号

时间:2014-12-03 08:53:36

标签: php jquery arrays comma

我几乎没有选择具有相同类别的方框。但是当我使用jQuery数组push方法将该类中的所有选定值作为数组获取时,它只是在每个值之前添加一个逗号(,)。 它使用静态值工作。问题是当我从PHP数组中向选择框添加值时。 这是我的选择框代码的样子

<select name="add_purch_item1" class="add_purch_item">
    <option value="">----select----</option>
    <?php if(!empty($pro_list1)) { foreach($pro_list1 as $products) { ?>
        <option value="<?php echo $products->sku; ?>"><?php echo $products->product_name; ?></option>
    <?php } } ?>
</select>

<select name="add_purch_item2" class="add_purch_item">
    <option value="">----select----</option>
    <?php if(!empty($pro_list2)) { foreach($pro_list2 as $products) { ?>
        <option value="<?php echo $products->sku; ?>"><?php echo $products->product_name; ?></option>
    <?php } } ?>
</select>

我在按钮上添加了一个点击功能。点击它会将所有选定的值作为数组。这是我的jQuery代码,

var selected = [];

    $('.add_purch_item').each(function () {
        selected.push($(this).val());
    });

    alert(selected);

当我尝试使用静态值选择框时,它会提供正确的输出。的 See here an example

我在动态值中得到了错误的输出。那个不受欢迎的逗号是我的问题。怎么避免呢?我也试过过字符串替换。 Wrong Output

2 个答案:

答案 0 :(得分:4)

正在发生这种情况,因为还插入了空白值。在插入之前,您需要检查所选值是否为空。

$('.add_purch_item').each(function () {
    var val = $(this).val();
    if (val) {
        selected.push(val);
    }
});

See updated fiddle.

答案 1 :(得分:1)

如果您有空白的选择元素(未选择值),则会发生这种情况。因此,当您创建数组时,忽略选择没有选择值的元素。

&#13;
&#13;
$(document).on("click", '#submit', function() {
  var selected = [];

  var selected = $('.add_purch_item').map(function() {
    return $(this).val() || undefined;
  }).get();

  alert(selected);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select name="name1" class="add_purch_item">
  <option value="" selected="selected">-----</option>
  <option value="1">value1</option>
  <option value="2">value2</option>
</select>

<select name="name2" class="add_purch_item">
  <option value="" selected="selected">-----</option>
  <option value="1">value1</option>
  <option value="2">value2</option>
</select>
<button id="submit">Check</button>
&#13;
&#13;
&#13;