【问题标题】:Jquery Trigger checkbox: function tied to click event occurs before the checked attribute is setJquery Trigger checkbox:与click事件相关的功能在设置checked属性之前发生
【发布时间】:2011-09-22 09:03:15
【问题描述】:

我正在实现“计费地址与地址相同”型函数,当检查复选框时,基于其他字段填充字段。完美运行。

点击事件的函数..

    if ($(this).attr('checked')) {
        // copy address fields to billing fields
    }
    else{
        // clear fields
    }

现在我使用一个事件(jquery 热键插件)来自动填充表单中的所有字段,以便我可以轻松快速地演示和测试表单。而不是作弊和填写帐单字段作为我想使用的地址字段

$("#CheckboxForAutofillId").trigger('click'); 

这在我第一次触发事件时不起作用,就像上面调用的函数一样,它会检查已检查的属性,但是触发器('click')显然会在更改属性之前调用事件。

这意味着我必须正确模拟它..

$("#CheckboxForAutofillId").attr("checked", "checked"); // sets checked
$("#CheckboxForAutofillId").trigger('click');           // fires event then 'unchecks'
$("#CheckboxForAutofillId").attr("checked", "checked"); // rechecks

阅读触发器的 jquery 页面时,我没有注意到提到的这一点,我也没有费心去挖掘源代码以查看实际发生的情况,但在我看来,理想情况下,触发器事件应该设置“已检查” ' 触发事件本身之前的属性,因为这样可以更好地模拟一个人检查复选框?

我错过了什么吗?

【问题讨论】:

    标签: javascript jquery triggers checkbox


    【解决方案1】:

    你应该使用 change() 而不是 click()。

    $("#CheckboxForAutofillId").change(function()
    {
        if(this.checked) ...
    });
    

    【讨论】:

    • 总是很高兴看到正确使用 js/jquery mix +1
    猜你喜欢
    • 2010-11-30
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    相关资源
    最近更新 更多