单击时禁止取消选中复选框(不禁用或只读)

时间:2012-08-27 08:49:43

标签: javascript jquery events checkbox

我正在使用复选框,我希望人们能够检查/取消选中它。 但是,当他们取消选中它时,我正在使用jQueryUI模式弹出窗口来确认他们确实想要这样做。因此,他们可以单击确定取消,我希望只有在单击确定时才能取消选中我的复选框。
这就是为什么我想要捕获uncheck事件以防止在视觉上取消选中该复选框,并且如果用户碰巧点击确定,则以编程方式取消选中它。

我怎么能这样做?

PS:我知道如果用户点击取消,我可以重新检查它,但这会触发我不想要的check事件。

6 个答案:

答案 0 :(得分:18)

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

答案 1 :(得分:12)

类似的东西:

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

FIDDLE

答案 2 :(得分:1)

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

preventDefault()将停用input[type="checkbox"]

的默认行为

在你的弹出窗口

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

答案 3 :(得分:1)

纯CSS解决方案

选择复选框,如 -

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

工作得很好,现在您可以在您选择的任何元素点击上切换复选框。

答案 4 :(得分:1)

   $("#checkboxID").click(function(e) { 
      var checkbox = $(this);
      if (checkbox.is(":checked")) {
       //check it 
      } else {
       // prevent from being unchecked
        this.checked=!this.checked;
      }
   });

答案 5 :(得分:0)

如何使用禁用HTML的属性?

<input type="checkbox" name="my_name" value="my_value" disabled> My value<br>

链接:

https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Property/disabled