2012-08-27 60 views
10

我正在使用複選框,我希望人們能夠檢查/取消選中它。 但是,當他們取消選中它時,我正在使用jQueryUI模式彈出窗口來確認他們確實想要這樣做。因此,他們可以點擊確定取消,我希望我的複選框僅在點擊時才能取消選中確定
這就是爲什麼我想抓住取消選中事件以防止複選框被視覺取消選中,並通過編程取消選中它自己,如果用戶碰巧點擊防止單擊時取消選中複選框(不禁用或只讀)

我該怎麼做?

PS:我知道如果用戶點擊取消後我可以重新檢查它,但這會觸發我不想要的check事件。

回答

14
$("#checkboxID").on("click", function (e) { 
    var checkbox = $(this); 
    if (checkbox.is(":checked")) { 
     // do the confirmation thing here 
     e.preventDefault(); 
     return false; 
    } 
}); 
+0

'.live()'被棄用最新版本的jQuery。改用'.on()'。 :) – AdityaParab

+0

哦,不知道,更新 –

+0

好吧它現在工作:)謝謝! – user1498572

0
$("#yourCheckBoxId").on('change',function(e){ 
    e.preventDefault(); 
    $("#yourPopDiv").popup(); 
}); 

preventDefault()將禁止你input[type="checkbox"]

並在您的彈出DIV

$("#ok").on('click',function(){ 
    $("#yourCheckBoxId").attr("checked",true); 
}); 
10

喜歡的東西默認行爲:

$("#test").on('change', function() { 
    this.checked=!this.checked?!confirm('Really uncheck this one ?'):true; 
}); 
​ 

FIDDLE

+0

最好的:) +1 – Uttara

+1

+1不錯。你可以使它更短/更清晰:'this.checked = this.checked || !確認('真的取消選中這個?');' – nbrooks

0

純CSS解決方案

選擇複選框一樣 -

input[type="checkbox"] { 
    pointer-events: none; 
} 

效果很好,現在你可以在你選擇的任何元素點擊切換您的複選框。

相關問題