Запретить проверку переключателей и показывать оповещения - PullRequest
2 голосов
/ 14 мая 2011

Я пытаюсь показать alert, если установлен определенный переключатель в группе, а затем снова проверить ранее выбранный переключатель.

Я думал о двух решениях:

  1. Добавление атрибута disabled, но события click не запускаются, поэтому я не могу вызвать alert.

  2. Если я не добавлю атрибут disabled, то отмеченная радиокнопка уже изменилась внутри события щелчка, поэтому я не могу получить исходную отмеченную радиокнопку, которую я хотел бы проверить снова.

В основном то, что у меня сейчас есть, это: 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 ]

2 голосов
/ 14 мая 2011

Это эффективно предотвращает попадание клика на нежелательные переключатели:

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

$('#r3, #r4').mousedown(function(e) {
    e.stopPropagation();
    alert($(this).attr('id'));
});
1 голос
/ 14 мая 2011

Я бы просто добавил список с предварительно нажатыми радиокнопками.Поэтому, когда вы добираетесь до того, кто показывает предупреждение, вы просто показываете предупреждение -> всплывающее из последних в списке / переменной и просто устанавливаете это как флажок.

От макушки головы:

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

Не помню весь синтаксис, но я надеюсь, что вы получите картину.

...