Javascript Checkbox.OnChange 事件未正确触发

标签 javascript jquery html

因此,我有一个业务案例,其中有组(称为 bundle ),并且它们可以包含其他 bundle 。现在,在我的界面中,我试图拥有它,以便当您检查顶层时,它会自动检查(并禁用,但我还没有)子包。

为了实现这一点,每个复选框都有一个 onchange 事件,它在其中传递 this 以及应检查的其他 Bundles 的逗号分隔列表。我在下面粘贴的代码表现出意外。也就是说,当我强制调用 Change 事件时(因为以编程方式操作选中状态不会引发 Change 事件),后续调用将使用与原始 Change 事件完全相同的参数使用过。

就好像当我调用 .change() 时,它传递了我的原始复选框(不是级联的复选框)和原始子项列表。

我已经输入了大量警报,关键警报说“即将触发 [正确复选框] 的更改”,但紧接着的下一个警报说“禁用 [原始/错误复选框] 引发的更改” .

关于为什么以编程方式引发 Change 事件会导致其参数变得困惑,有什么想法吗?

function disableChildren(chkBundle, childBundles) {

        var bundleId = chkBundle.id.substr(chkBundle.id.lastIndexOf("chk"));
        alert("disable raised for '" + bundleId + "' using children '" + childBundles + "'");
        jQuery("#BundleList input:checkbox[id*=" + bundleId + "id]").attr("checked", chkBundle.checked);

        var childIds = childBundles.split(",");

        for (var i = 0; i < childIds.length; i++) {
            jQuery("#BundleList input:checkbox[id$=chk" + childIds[i] + "]").each(function(index, domEle) {
                if (domEle.checked != chkBundle.checked) {
                    alert('about to check ' + domEle.id);
                    domEle.checked = chkBundle.checked;
                    alert('about to trigger change for ' + domEle.id);
                    domEle.change();
                    alert('done triggering ' + domEle.id);
                }
            });
        }
    }

还有一个复选框的 html 示例:

<input id="BundleAssignment_rptMainBundle_ctl02_chk1" 
type="checkbox" name="BundleAssignment$rptMainBundle$ctl02$chk1" 
onchange="disableChildren(this,'7,8')" onclick="disableChildren(this,'7,8')" />

最佳答案

删除与 change 有关的任何内容。替换domEle.change();domEle.click();

关于Javascript Checkbox.OnChange 事件未正确触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3587146/

相关文章:

javascript - 具有视差效果的 DIV 叠加层

html - 如何设置 html "select"元素的选项样式?

javascript - 使用 slider 更新 D3 热图颜色范围

javascript - Javascript 中的正则表达式,用于仅包含数字的字符串,并且除数字之外的任何位置不应包含任何字符

jquery - jQuery Mobile 中的轮播式画廊

javascript - jqgrid 服务器端错误消息/验证处理

javascript - 以下两个代码的超快速和首选方式是什么?

javascript - Google map API v3 圆圈叠加问题

javascript - JQuery .hasClass() 不工作?

html - 使用 img 的标题属性作为图像图例?