以某种方式使用ready()和change()干扰

时间:2014-12-10 15:01:25

标签: jquery document-ready

我想跟随jsfiddle工作:http://jsfiddle.net/hLbnfx2n/7/ 但是我在同时使用ready()和change()时遇到了困难,所以 一些错误发生(如果你点击" Ja"然后" Nein",然后" Ja"第一个 问题,

    $('#radioListId2 input').first().attr('checked',true);
    $('#radioListId3 input').first().attr('checked',true);

无法按预期工作。

我想要的是,按钮仅在给出4个答案时有效,而当第一个答案是" Ja"时,以下问题2和3被回答(如" Ja")并自动停用。

不同的任务似乎有效,但它们不能一起行动。

2 个答案:

答案 0 :(得分:1)

问题不在于ready()change(),而在于click()change()。问题是您的change处理程序在click之前触发,您可以通过在按钮和文档上收到事件时记录事件来查看:

$(document).ready(function () {
    $("input[name='C002$ctl00$ctl00$C011$ctl00$ctl00$radioButtons_radiobuttons']").on("click", function () {
        console.log('input received click');
    });
});

$(document).on('change click', function(ev) {
    console.log('document received event: ', ev.type);
});

单击按钮时,日志显示:

document received event:  change
input received click
document received event:  click

有几种方法可以完成你所追求的目标。这是一个:使用单个change()处理程序检查所有按钮的值,并根据其他单选按钮的值以及随后检查的单选按钮总数相应地设置表单状态。

答案 1 :(得分:0)

我找到了一种方法来处理它,可以在这里看到:http://jsfiddle.net/hLbnfx2n/13/ 我使用click-event来强制触发change-event:

$("#sai").click(function () {
     $("input").trigger('change');
});

摆脱这个问题。我确信这不是最佳方式,但同时也符合我的需求。