Javascript 如何检测带有表单更改的切换
我有一个名为UPO的部分,其中upoCost用于表单上的部分。我使用此代码来检测UPO是否可见,从而添加/减去该部分的基本成本Javascript 如何检测带有表单更改的切换,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个名为UPO的部分,其中upoCost用于表单上的部分。我使用此代码来检测UPO是否可见,从而添加/减去该部分的基本成本 $("#showUPO").click(function(){ $("#sectionUPO").toggle(); if ($("#sectionUPO").is(":hidden")){ upoCost-=5; $("#upoEmailCost").val(upoCost); } else {
$("#showUPO").click(function(){
$("#sectionUPO").toggle();
if ($("#sectionUPO").is(":hidden")){
upoCost-=5;
$("#upoEmailCost").val(upoCost);
}
else {
upoCost+=5;
$("#upoEmailCost").val(upoCost);
}
})
因此,每次单击按钮时,该部分的成本都会更新,但表单的总成本不会更新
$("form").on("change", function(){
var sum = upoCost; // + other costs;
$("#reqTotalCost").val(sum);
})
我想知道是否有一种方法可以使用类似的.on(“更改”)方法来捕获它
尝试手动触发一个更改事件,以弹出到窗体。对元素的逻辑更改不会固有地生成事件
$("#showUPO").click(function(){
var $upo = $("#sectionUPO").toggle();
if ($upo.is(":hidden")){
upoCost-=5;
} else {
upoCost+=5;
}
$("#upoEmailCost").val(upoCost).trigger('change');
});
尝试手动触发一个更改事件,以弹出到窗体。对元素的逻辑更改不会固有地生成事件
$("#showUPO").click(function(){
var $upo = $("#sectionUPO").toggle();
if ($upo.is(":hidden")){
upoCost-=5;
} else {
upoCost+=5;
}
$("#upoEmailCost").val(upoCost).trigger('change');
});
这很有效。非常感谢。只是想澄清一下
trigger('change')
方法,为什么我要将它应用于$(“#upoEmailCost”).val(upoCost)
而不是$(“#reqTotalCost”).val(sum)
?您正在更改upoEmailCost的值,不是吗?这就是改变的原因。然后,该事件将被另一个事件处理程序捕获并处理,这将导致总成本随后发生更改。当我单击该按钮时,upoEmailCost的值会更改,是,但reqTotalCost的值不会更改。那么我们不应该触发总成本吗?顺便说一下,我刚刚测试了这两种方法,只要触发更改事件的元素是表单的子元素,就不重要了。重要的是在表单中触发事件,使其冒泡到要处理的位置@这很有效。非常感谢。只是想澄清一下trigger('change')
方法,为什么我要将它应用于$(“#upoEmailCost”).val(upoCost)
而不是$(“#reqTotalCost”).val(sum)
?您正在更改upoEmailCost的值,不是吗?这就是改变的原因。然后,该事件将被另一个事件处理程序捕获并处理,这将导致总成本随后发生更改。当我单击该按钮时,upoEmailCost的值会更改,是,但reqTotalCost的值不会更改。那么我们不应该触发总成本吗?顺便说一下,我刚刚测试了这两种方法,只要触发更改事件的元素是表单的子元素,就不重要了。重要的是在表单中触发事件,使其冒泡到要处理的位置@比亚里斯