jQuery推送数组插入逗号
Posted
技术标签:
【中文标题】jQuery推送数组插入逗号【英文标题】:jQuery push array inserts comma 【发布时间】:2014-12-03 08:53:36 【问题描述】:我有几个相同类的选择框。但是,当我使用 jQuery 数组推送方法将该类中的所有选定值作为数组获取时,它只是在每个值之前添加一个逗号 (,)。 它适用于具有静态值的鳍。问题是当我从 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
我在动态值中得到了错误的输出。那个不需要的逗号是我的问题。如何避免这种情况?我也尝试过字符串替换。
【问题讨论】:
您能否发布您的完整代码。一个有效的小提琴对诊断问题并没有真正的帮助。 我能看到的唯一原因是可能有一个空值 完整代码是什么意思?哪个代码? 【参考方案1】:发生这种情况是因为还插入了空白值。您需要在插入之前检查所选值是否为空。
$('.add_purch_item').each(function ()
var val = $(this).val();
if (val)
selected.push(val);
);
See updated fiddle.
【讨论】:
【参考方案2】:它发生在您有空白选择元素的地方(未选择值)。因此,当您创建数组时,请忽略未选择值的选择元素。
$(document).on("click", '#submit', function()
var selected = [];
var selected = $('.add_purch_item').map(function()
return $(this).val() || undefined;
).get();
alert(selected);
);
<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>
【讨论】:
以上是关于jQuery推送数组插入逗号的主要内容,如果未能解决你的问题,请参考以下文章