所以我有许多输入 type="number" 字段 - 当它们被改变时,我运行这个:
$('.amount-input').change(function() {
checkAmount($(this));
setPrices();
allowSubmit();
});
checkAmount 函数使用更改元素的值运行 ajax 请求,以检查该数字是低于还是高于某个其他数字(比如说 5)。如果它更高,它将每个数字字段唯一的隐藏字段的值设置为“true”:
var $toHighAmount = aElement.prev().prev().prev();
$toHighAmount.val('true');
接下来,allowSubmit 函数应该检查所有这些真/假字段的值,如果其中任何一个设置为真,它应该禁用提交按钮。
function allowSubmit() {
var givenError = "false";
$( ".rowToHighAmount" ).each(function() {
var val = $(this).get(0).value;
if (val == "true") {
givenError = "true";
}
});
if (givenError == "true") {
$("#cartSubmitBtn").attr("disabled", "disabled");
} else {
$("#cartSubmitBtn").removeAttr("disabled");
}
}
所以 - 问题。checkAmounts() 确实改变了隐藏的真/假字段的值。但是 - 当 allowSubmit() 运行时,它会处理该字段的旧值。因此,例如:
如果我将 input type="number" 的值设置为 4,则 true/false 字段设置为 false。如果我然后将 input type="number" 更改为 6 - true/false 字段设置为 true(意味着 6 高于 5) - 但是当 allowSubmit 运行时它仍然认为该值为 false - 并且不会禁用提交按钮。只有当我再次增加数字时 - allowSubmit 才知道有一个真正的价值。
反过来也是一样。我必须将数字字段两次更改为低于 5 的值才能再次激活提交按钮。
所以 - 总之 - 我需要确保 allowSubmit 获取的值是绝对当前值 - 而不是更改操作之前的那个值。
有人有想法么?