jQuery - 从输入属性中删除值

时间:2017-03-27 16:13:23

标签: javascript jquery checkbox replace

我的jQuery脚本将产品ID添加到输入类型="隐藏"值=" ID1,ID2,ID3"

脚本正在运行并在复选框更改时添加了ID,但是如果我取消选中此框,则必须从该输入中删除ID。

我的部分代码:

<input type="hidden" value="100" class="productid100">

<script>

 var productid = jQuery(".productid<?php echo $_item->getId(); ?>").val();
 var defaultcombo = jQuery('.combodata').val();

 if(jQuery(this).is(":checked")) {

 jQuery('.combodata').attr("value", defaultcombo + productid+",");

 }else{

 var test = jQuery('#combo input:hidden[value=""]', productid+',').remove();
 console.log(test);

 }
</script>

<div id="combo">
<input type="hidden" class="hidden combodata" value="">
</div>

的console.log()

Uncaught Error: Syntax error, unrecognized expression: 100,
at Function.ga.error (jquery-1.11.1.min.js:2)
at ga.tokenize (jquery-1.11.1.min.js:2)
at ga.select (jquery-1.11.1.min.js:2)
at Function.ga [as find] (jquery-1.11.1.min.js:2)
at m.fn.init.find (jquery-1.11.1.min.js:2)
at m.fn.init (jquery-1.11.1.min.js:2)
at new m (jquery-1.11.1.min.js:2)
at m.fn.init (jquery-1.11.1.min.js:2)
at m (jquery-1.11.1.min.js:2)
at HTMLInputElement.<anonymous> ...

此代码位于页面中每个产品展示的PHP foreach中。

在最后,我只需要在复选框点击时添加产品ID,并在取消选中时删除指定ID。

问题出在这里:

jQuery('#combo input:hidden[value=""]', productid+',').remove();

1 个答案:

答案 0 :(得分:0)

您的代码存在的问题是由于您使用remove()时使用的语法。它旨在从DOM中删除元素,而不是元素属性中字符串的一部分。

您可以通过构建与已选中复选框相关的隐藏输入值的数组来简化问题,然后在该数组上调用join()并将其设置为隐藏字段的值,如下所示:< / p>

&#13;
&#13;
$('.checkbox').change(function() {
  var values = $('.checkbox:checked').map(function() {
    return $(this).next('.myclass').val();
  }).get();
  
  $('#output').val(values.join(','));
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>
  <input type="checkbox" class="checkbox" value="id1" /> 
  <input type="hidden" value="100" class="myclass">
  id1
</label>
<label>
  <input type="checkbox" class="checkbox" value="id2" /> 
  <input type="hidden" value="200" class="myclass">
  id2
</label>
<label>
  <input type="checkbox" class="checkbox" value="id3" /> 
  <input type="hidden" value="300" class="myclass">
  id3
</label>

<input type="text" id="output" />
&#13;
&#13;
&#13;

请注意,对于此示例,该字段是文本输入,因此您可以看到要更改的值。