刷新不会将值归零,而是将其转换为值列表
Refresh doesn't zero values, turns it into a list of values
所以我正在尝试使用表单中复选框的值来创建一个位域。但是,每当我刷新页面或提交验证失败时,它不会将值归零,而是将其变成一个列表。
var priceSum = 0;
$('.price:checked').each(function() {
priceSum += parseInt(this.value);
});
这是里面$('#form').submit(function() {})
如果没有验证错误或刷新,我得到正确的值。但是,如果确实发生了这些事件,它会将值转换为列表。例如,假设验证在成功之前失败了两次,而不是得到 4,我会得到 0, 0, 4
经过进一步审查,我很确定这与我将其附加到表单的方式有关
var prices = $('<input>').attr("type", "hidden").attr("name", "priceSum").val(priceSum);
$('#form').append($(prices));
那会不会每次都继续附加值?如果是,有没有办法删除已经存在的隐藏字段?
谢谢
Would that just keep appending the value everytime?
是的。仅在不存在时附加 priceSum
输入。
如果你不能轻易避免每次创建隐藏输入,如果它存在,你可以先删除它:
$('#form [name=priceSum]').remove();
即使输入不存在,您也可以安全地执行此操作。然后它只会找到零个元素,而 remove
调用什么也不做。
所以我正在尝试使用表单中复选框的值来创建一个位域。但是,每当我刷新页面或提交验证失败时,它不会将值归零,而是将其变成一个列表。
var priceSum = 0;
$('.price:checked').each(function() {
priceSum += parseInt(this.value);
});
这是里面$('#form').submit(function() {})
如果没有验证错误或刷新,我得到正确的值。但是,如果确实发生了这些事件,它会将值转换为列表。例如,假设验证在成功之前失败了两次,而不是得到 4,我会得到 0, 0, 4
经过进一步审查,我很确定这与我将其附加到表单的方式有关
var prices = $('<input>').attr("type", "hidden").attr("name", "priceSum").val(priceSum);
$('#form').append($(prices));
那会不会每次都继续附加值?如果是,有没有办法删除已经存在的隐藏字段?
谢谢
Would that just keep appending the value everytime?
是的。仅在不存在时附加 priceSum
输入。
如果你不能轻易避免每次创建隐藏输入,如果它存在,你可以先删除它:
$('#form [name=priceSum]').remove();
即使输入不存在,您也可以安全地执行此操作。然后它只会找到零个元素,而 remove
调用什么也不做。