【问题标题】:Prevent radio button check and show an alert防止单选按钮检查并显示警报
【发布时间】:2011-08-25 12:33:17
【问题描述】:

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

我在想两个解决方案:

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

  2. 1234563

基本上,我目前拥有的是: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.
});

如何在#r3click 事件中获取以前选中的单选按钮(或者有类似beforeclick 事件的东西)?或者我怎样才能使click 事件适用于disabled 单选按钮?

【问题讨论】:

标签: jquery dom click radio-button


【解决方案1】:

我会简单地添加一个带有以前按下的单选按钮的列表。因此,当您到达显示警报的位置时,您只需显示警报 -> 从列表/变量中的最后一个弹出并简单地将其设置为选中。

从我的头顶:

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;
    }                
});

不记得所有的语法,但我希望你能明白。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 谢谢,但是如果它是由键盘选择的,例如,这也有效吗?
    • 嗯,很遗憾没有。我已经尝试过实现历史记录(按照 Martin 的回答,但使用输入的 data() 在此处存储历史记录:jsfiddle.net/df9ye/56,但如果您使用键盘进行更新,这似乎也不起作用。我认为这是更改事件的限制(似乎暗示在api.jquery.com/change的前几段中)
    猜你喜欢
    • 2010-10-14
    • 1970-01-01
    • 2015-07-28
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 2021-05-07
    • 1970-01-01
    相关资源
    最近更新 更多