防止单选按钮检查并显示警报

时间:2011-05-14 13:41:16

标签: jquery dom click radio-button

我正在尝试显示alert如果某个组中的某个单选按钮被选中,然后再次检查以前检查过的单选按钮。

我在想两个解决方案:

  1. 添加disabled属性,但click个事件未被触发,因此我无法弹出alert

  2. 如果我没有添加disabled属性,那么单击事件中已检查的单选按钮已经更改,因此我无法获取我想要检查的原始选中的单选按钮试。

  3. 基本上,我目前拥有的是:http://jsfiddle.net/Jygmn/2/

    <input name="r" type="radio" id="r1"> r1<br>
    <input name="r" type="radio" id="r2"> r2<br>
    <input name="r" type="radio" id="r3"> r3<br>
    <input name="r" type="radio" id="r4" disabled> r4<br>
    

    JavaScript的:

    $('#r3, #r4').click(function() {
        window.alert($('input[name=r]:checked').attr('id'));
        // 1) doesn't alert for #r4 because it's disabled.
        // 2) always alerts r3 when #r3 is clicked but I'd like to
        //    obtain the formerly checked radio button id.
    });
    

    如何在click #r3事件中获取以前检查过的单选按钮(或者有类似beforeclick事件的内容)?或者我如何才能使click个事件适用于disabled单选按钮?

2 个答案:

答案 0 :(得分:2)

这有效地阻止点击进入不需要的单选按钮:

http://jsfiddle.net/df9ye/5/

$('#r3, #r4').mousedown(function(e) {
    e.stopPropagation();
    alert($(this).attr('id'));
});

答案 1 :(得分:1)

我只需添加一个包含先前按下的radiobuttons的列表。因此,当您到达显示警报的那个时,只需显示警报 - &gt;从列表/变量的最后一个弹出,然后将其设置为选中。

从头到尾:

var lastClick;
$("input[@name='r']".changed(function () {

   if("input[@id='r3']][checked=true]"){
        window.alert("r3 was pressed"); 
        $("#r3").checked = false;
        $(lastClick).checked = true;
    }else{
        lastClick ="#" + GetTheOneSelected;
    }                
});

不要记住所有的语法,但我希望你能得到这张照片。