Jquery 获取更改事件后输入的值
因此,我有许多输入type=“number”字段,当它们被更改时,我运行以下命令:Jquery 获取更改事件后输入的值,jquery,Jquery,因此,我有许多输入type=“number”字段,当它们被更改时,我运行以下命令: $('.amount-input').change(function() { checkAmount($(this)); setPrices(); allowSubmit(); }); checkAmount函数使用已更改元素的值运行ajax请求,以检查该数字是否低于或高于其他数字(比如5)。如果较高,则将每个数字字段唯一的隐藏字段的值设置为“true”: 接下来,allowSubmit函数应
$('.amount-input').change(function() {
checkAmount($(this));
setPrices();
allowSubmit();
});
checkAmount函数使用已更改元素的值运行ajax请求,以检查该数字是否低于或高于其他数字(比如5)。如果较高,则将每个数字字段唯一的隐藏字段的值设置为“true”:
接下来,allowSubmit函数应该检查所有这些true/false字段的值,如果其中任何字段设置为true,它应该禁用submit按钮
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()会更改隐藏的true/false字段的值。但是-当allowSubmit()运行时,它会处理该字段的旧值。例如:
如果我将input type=“number”的值设置为4,则true/false字段将设置为false。如果我随后将input type=“number”更改为6-true/false字段设置为true(意味着6大于5)-但当allowSubmit运行时,它仍然认为该值为false-并且不会禁用submit按钮。只有当我再次增加这个数字时,allowSubmit才知道有一个真值
另一方面也一样。为了再次激活提交按钮,我必须两次将数字字段更改为下面的5
所以-总之-我需要确保allowSubmit拾取的值是绝对当前值-而不是更改操作之前的值
有人有什么想法吗 这是一个经典问题:由于ajax函数是异步的,因此需要从您给它的回调中执行
allowSubmit
,也就是说,如果我跟着您,在checkAmount
中执行
allowSubmit函数应该检查所有这些真/假字段的值
如果您正在检查由ajax请求更改的字段的真/假,那么您应该在ajax的成功回调中调用allowsubmit
。。
并使用prop()
if (givenError == "true") {
$("#cartSubmitBtn").prop("disabled", true);
} else {
$("#cartSubmitBtn").prop("disabled",false);
}
setPrices
和allowSubmit
应该作为ajax请求的成功处理程序的一部分运行。谢谢!它成功了。现在,我在ajax请求的.done段中运行alowSubmit()。
if (givenError == "true") {
$("#cartSubmitBtn").prop("disabled", true);
} else {
$("#cartSubmitBtn").prop("disabled",false);
}