У меня есть простая функция, которая проверяет состояние базы данных при щелчке по флажку и позволяет либо проверять, либо отключать ее. Я включил условие в 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>
Он работает, чтобы активировать флажок (при условии, что условие базы данных выполнено), но не наоборот.
Спасибо за попытку, но это было не так. Я понял, в чем проблема, у меня есть «e.preventDefault();», что означает, что логика для условия была обратной (потому что она препятствует переключению флажка). Все, что мне было нужно, было '!' В начале 'if'. –