2014-03-27 41 views
4

我試圖取消單選按鈕單擊。我有這樣一個jQuery點擊處理程序:當沒有選擇其他值時,返回false不取消單選按鈕中的單選按鈕

$("#myList").on("click","input", function(){ 

    return false; 

}); 

這工作正常,當已經有一個選定的值。但是,如果我從沒有選定值的組中單擊一個單選按鈕,返回false將不起作用,並且實際上我單擊的元素被選中。

任何線索?

編輯:

這裏是小提琴演示問題:

http://jsfiddle.net/SFZMm/2/

EDIT2:

剛剛發現這隻發生在Chrome :(Firefox和IE按預期工作。也許一種解決方法?

+0

哪裏是你的html ? –

+1

什麼是東西? –

+0

爲簡單起見,東西只是一個布爾變量集之前 –

回答

2

這裏,試試這個JS_FIDDLE-DEMO

它檢測父容器上的點擊。不是它自己的單選按鈕。

//listen to click on parent div,span,li for example. 
$("#myList-parent").click(function(){ 

     alert('You clicked radio!'); 
     //Now put your logic here. I decide based on the radio button value. 
     if($('input:radio[name=type]:checked').val() == "UnSelectable"){ 
      alert($('input:radio[name=type]:checked').val()); 
       return false;  
     } 
    }); 

更新(變通適用於Chrome):JS-FIDDLE-DEMO 似乎鉻與on click問題,所以用on mousedown更換(或同時使用):

$("input").on("mousedown",function(e) { 
     e.preventDefault(); 
     if ($(this).is(':checked')) { 
      alert('This radio button was checked in mousedown');     
     } else { 
      alert('This radio button was not checked in mousedown'); 
     }      
    }); 
+1

感謝您的回答,在我的原始代碼中,我檢測到父母不在元素本身上的點擊。嘗試對你的小提琴進行修改,然後點擊「不可選」收音機,看看會發生什麼? http://jsfiddle.net/kbAk3/362/ –

+0

對不起,我沒有關注你的意思。無論「可選擇」的值如何,都不能選擇不可選項。你能否更詳細地解釋你期望的行爲? – MJoraid

+0

我期望無法選擇無法選擇的單選按鈕,但在Chrome中,我能夠 –

1

使用change methods for input elements而不是點擊。

$("#myList").on("change","input", function(e){ 
    if(something){ 
     e.preventDefault(); 
    } else{ 
    //for test 
    alert('not true'); 
    } 
}); 
+0

讓我試試 –

+0

如果我使用更改事件被激發,但現在返回false即使對於選擇了另一個元素的羣組也不起作用......它不會停止單選按鈕被點擊 –

+0

嘗試更新答案。 –

相關問題