我几乎没有选择具有相同类别的方框。但是当我使用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
我在动态值中得到了错误的输出。那个不受欢迎的逗号是我的问题。怎么避免呢?我也试过过字符串替换。
答案 0 :(得分:4)
正在发生这种情况,因为还插入了空白值。在插入之前,您需要检查所选值是否为空。
$('.add_purch_item').each(function () {
var val = $(this).val();
if (val) {
selected.push(val);
}
});
答案 1 :(得分:1)
如果您有空白的选择元素(未选择值),则会发生这种情况。因此,当您创建数组时,忽略选择没有选择值的元素。
$(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;