我有一个简单的函数,可以在单击复选框时测试数据库上的条件,并允许检查它或强制取消选中它。我已经在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>
它可以激活复选框(提供数据库条件),但不是相反。
答案 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();