Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检测带有表单更改的切换_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 如何检测带有表单更改的切换

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 {

我有一个名为UPO的部分,其中upoCost用于表单上的部分。我使用此代码来检测UPO是否可见,从而添加/减去该部分的基本成本

$("#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的值不会更改。那么我们不应该触发总成本吗?顺便说一下,我刚刚测试了这两种方法,只要触发更改事件的元素是表单的子元素,就不重要了。重要的是在表单中触发事件,使其冒泡到要处理的位置@比亚里斯