Я пытаюсь заставить работать трехсторонний флажок.
Для этого я хочу самостоятельно обработать щелчок или изменить действие ... т.е. решить, каким будет следующее состояние.
Но я борюсь в самом начале:
Я устанавливаю флажок
Установить неопределенное значение true
Проверить это время выполнения => неопределенный = true, проверено = false
Получил обработчик событий для клика с prevenDefault()
Разметка остается неизменной, как и ожидалось => выглядит как неопределенный флажок
Но когда я проверяю значения для неопределенных и проверяемых, они, тем не менее, переключаются
Поиск в поиске решения Я обнаружил, что существует 2 способа создания обработчика событий
$('.chk').click(function(event){});
И
$('.chk').on('click',function(event){});
Я пробовал оба.
Также пытался изменить вместо клика.
Даже пытался иметь и клик и изменение, с одним из них просто prevenDefault()
.
У меня настроен jsfiddle:
https://jsfiddle.net/PeterKaagman/rpmL0gv4
$(".chk").prop("indeterminate", true);
$("#out").append("Checked " + $('#chk_1').prop('checked') + "<br>");
$("#out").append("Indeterminate " + $('#chk_1').prop('indeterminate') );
$(".chk").click(function(event){
event.preventDefault();
$("#out").empty();
console.log(this);
$("#out").append("Checked " + this.checked + "<br>");
$("#out").append("Indeterminate " + this.indeterminate );
});
//$(".chk").on(change,function(event){
// event.preventDefault();
//})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>3-way checkbox</p>
<input type="checkbox" class="chk" id="chk_1" >
<div id="out"></div>
Большинство из них предназначено для отладки, как вы можете видеть.
Что я ожидал, так это то, что проверенные и неопределенные свойства не изменятся из-за метода protectDefault (). Позвольте мне решить следующее состояние флажка.
Я уверен, что я делаю что-то глупое ... может кто-нибудь, пожалуйста, укажет мне на это?
Peter