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推送数组插入逗号的主要内容,如果未能解决你的问题,请参考以下文章

无需推送数组的表单验证

vue.js 推送数组组件

如何在 Vue 3 中推送递归数组?

Jquery SerializeArray 和推送对象列表

使用 jQuery (Javascript) 的 Firebase 推送通知

数组推送仅推送数组的最后一个值