我有一个隐藏的输入:
<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 修复了丢失的#
答案 0 :(得分:1)
您需要将字符串转换为对象。
变化:
$('paidIds').val()
到
$('#paidIds').val()
尝试:
var $paidIds = $('#paidIds').val();
if($paidIds != ""){
$paidIds = JSON.parse($paidIds);
}
答案 1 :(得分:1)
在您从输入中读取时尝试使用JSON.parse
,并在设置输入值时使用JSON.stringify
答案 2 :(得分:1)
我建议您将数组存储为data-
属性并使用jQuery.data()
来读取它,而不是将值解析为数组。
HTML
<input id="paidIds" name="paidIds" data-array="[1,2,3]" value="[1,2,3]">
JS
/* Custom event to handle updates*/
$('#paidIds').on('updateArray', function (evt, newVal) {
var arr = $(this).data('array');
arr.push(newVal);
$(this).val(JSON.stringify(arr))
});
/* Useage*/
$('button').click(function () {
var newArrValue=$(this).data('val')
$('#paidIds').trigger('updateArray', [newArrValue]);
});
的 DEMO 强>