使用jQuery有条件地取消选中复选框

时间:2016-07-20 11:02:36

标签: jquery

我有一个简单的函数,可以在单击复选框时测试数据库上的条件,并允许检查它或强制取消选中它。我已经在jQuery中包含了一个条件,如果它被取消选中则绕过这个条件(因为应该总是允许用户取消选中它)。

使用console.log确定执行时发生了什么,一切都按预期工作之外没有取消选中该框。似乎$('#oncall').prop('checked', false);根本没有做任何事情。

    $(document).on('click','#oncall',function(e){
        e.preventDefault();
        if ($(this).is(':checked')) {
            $.ajax({
                url: 'includes/oncall.ajax.php',
                type: "POST",
                data: {'sheet_date':$('#sheet_date').val()},
                success: function(data) {
                  if (data == 1) {
                    $('#oncall').prop('checked',true);
                  } else {
                    $('#oncall').prop('checked', false);
                  }
                },
                error: function() {
                  alert("Something went wrong.");
                }
            });
        } else {
            $('#oncall').prop('checked', false);
        }
    });

适用的HTML是一个简单的复选框;

<label for="oncall" class="onlab"><input type="checkbox" value="1" name="oncall" class="oncall_box" id="oncall"><span class="oncall_label">On call</span></label>

它可以激活复选框(提供数据库条件),但不是相反。

2 个答案:

答案 0 :(得分:0)

var data = 0;//if data = 1 it will check
$('#oncall').prop('checked',data);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label for="oncall" class="onlab"><input type="checkbox" value="1" name="oncall" class="oncall_box" id="oncall"><span class="oncall_label">On call</span></label>

像这样使用

答案 1 :(得分:0)

大约一个小时后,我发现了问题所在。

Calendar calendar = Calendar.getInstance(); SimpleDateFormat mdformat = new SimpleDateFormat("yyyy / MM / dd "); String strDate =mdformat.format(calendar.getTime()).toString(); String link = "http://avin.ashainfosystems.com/cw/orders.php?orders=" + name + "&order_id=" + strDate; 阻止了复选框切换状态,这意味着条件中的逻辑被反转 - 复选框一被点击就不会被检查。

我通过将if条件更改为

来纠正此问题
e.preventDefault();