尽管使用了preventDefault,Checkbox仍然未经检查

问题描述 投票:-1回答:2

getInfo()返回false时,窗口alert被抛出,但复选框仍然被更改;检查是否未选中,反之亦然。

有帮助吗?

$("input[type='checkbox']").click(function(event) {
  var someCondition = getInfo();
  if (someCondition === false) {
    event.preventDefault();
    window.alert("Nope");
    return false;
  }
});

function getInfo() {
  return false; // just for testing
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" />
javascript jquery
2个回答
0
投票

如果我理解你需要什么,你可以使用它

  $("input[type='checkbox']").click(function (event) {
         var someCondition = getInfo();
         if(someCondition === false) {
            var checkVal = $("input[type='checkbox']").val();
             $("input[type='checkbox']").attr( "checked", !checkVal );
             window.alert("Nope");

         }
     });

或者,如果您希望在条件为假的情况下取消选中复选框

  $("input[type='checkbox']").click(function (event) {
         var someCondition = getInfo();
         if(someCondition === false) {
             $("input[type='checkbox']").attr( "checked", false);
             window.alert("Nope");

         }
     });

希望能帮助到你


0
投票

您的代码似乎适用于小提琴,但其他一些插件可能会干扰该行为。仍然,尝试以下,看看这是否解决了这个问题

 $("input[type='checkbox']").on('click',function (event) {
        var someCondition = getInfo();
        var checkBox = $(this);
        if(someCondition === false) { 
            event.preventDefault();
            checkBox.prop('checked', !checkBox.prop('checked'))
            window.alert("Nope");
            return false;
        }
    });
© www.soinside.com 2019 - 2024. All rights reserved.