html - Jquery checkbox .prop click preventDefault behaviour -
i have been working many checkboxes lately. came across 'problem' .prevendefault()
click event , tried find solution this. in case wanted able decide if checkbox checked/unchecked according other fields. had open dialog before event fired. sounded easier turned out be...
in this jsfiddle can see problem , how tried solve (see code below well). answers implied use change instead of click. can't use .preventdefault()
.
$('div').off('change','.wtf').on('change', '.wtf', function(e) { //e.preventdefault(); //return false; if($(this).prop('checked') == true) { alert('i true now, must stay false'); $(this).prop('checked', false); } else { alert('i false now, must stay true'); $(this).prop('checked', true); } });
is best solution? or there other way make checkbox wait untill allowed change it's state?
as example: checkbox unchecked if user agrees message in dialog hitting 'ok'.
checkboxes special case change
event , click
can replace each-other since change event
fired clicking on checkbox.
that said big difference between click
, change
usability of .preventdefault()
. change event better in cases value of checkbox being changed using other methods clicking.
in case choose whichever prefer. example be: fiddle here
$('input[type="checkbox"]').on('change', function () { var ch = $(this), c; if (ch.is(':checked')) { ch.prop('checked', false); c = confirm('do you?'); if (c) { ch.prop('checked', true); } } else { ch.prop('checked', true); c = confirm('are sure?'); if (c) { ch.prop('checked', false); } } });