我有一个隐藏的输入:

<input type="hidden" id="paidIds" name="paidIds" value="[]">


它以一个空数组作为其值开头。
我想从中添加和删除项目,但无法解决。
到目前为止,这是我的代码:
追加:

var $paidIds = $('#paidIds').val();
$paidIds.push($id);
$('#paidIds').val($paidIds);


去除:

var $paidIds = $('#paidIds').val();
var $index = paidIds.indexOf($id);
if($index != -1) {
    $('#paidIds').val().splice($index, 1);
}
$('#paidIds').val($paidIds);


到目前为止,问题之一是$ paidIds在以下情况下仍未定义:

var $paidIds = $('#paidIds').val();


不知所措,谷歌没有帮助-__-

编辑
在调试器$ paidIds = [4]中使其部分工作,但未设置该值。

var $paidIds = JSON.parse($('#paidIds').val());
$paidIds.push($id);
$paidIds = JSON.stringify($paidIds)
$('#paidIds').val($paidIds);


EDIT2修复了丢失的#

最佳答案

您需要将字符串转换为对象。

更改:

$('paidIds').val()




$('#paidIds').val()


尝试:

var $paidIds = $('#paidIds').val();
if($paidIds != ""){
    $paidIds = JSON.parse($paidIds);
}

10-08 11:15