$(document).ready(function() {
//set initial state.
$('#textbox1').val($(this).is(':checked'));
$('#checkbox1').change(function() {
$('#textbox1').val($(this).is(':checked'));
});
$('#checkbox1').click(function() {
if (!$(this).is(':checked')) {
return confirm("Are you sure?");
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="checkbox1"/><br />
<input type="text" id="textbox1"/>
Здесь .change()
обновляет значение текстового поля со статусом флажка. Я использую, .click()
чтобы подтвердить действие по снятию отметки. Если пользователь выбирает «Отмена», флажок восстанавливается, но .change()
срабатывает до подтверждения.
Это оставляет вещи в несовместимом состоянии, и текстовое поле говорит ложь, когда флажок установлен.
Как я могу справиться с отменой и сохранить значение текстового поля в соответствии с состоянием проверки?
javascript
jquery
event-handling
Профессор хаос
источник
источник
Ответы:
Протестировано в JSFiddle и выполняет то, что вы просите. Этот подход имеет дополнительное преимущество - срабатывание при нажатии на ярлык, связанный с флажком.
Обновленный ответ:
Оригинальный ответ:
источник
this.checked
вместо$(this).is(':checked')
: jsperf.com/prop-vs-ischecked/5this.checked
писать намного быстрее + нативный javascript, может быть, в общем, стоило бы использовать в целом (не считая ~ 200-300 раз быстрее).демонстрация
использование
mousedown
источник
Большинство ответов не поймут это (по-видимому), если вы используете
<label for="cbId">cb name</label>
. Это означает, что при нажатии на ярлык будет установлен флажок, а не непосредственно установлен флажок. (Не совсем вопрос, но различные результаты поиска, как правило, приходят сюда)В этом случае вы можете использовать:
Earlier versions of jQuery:
Пример JSFiddle с jQuery 1.6.4
jQuery 1.7+
Пример JSFiddle с последней версией jQuery 2.x
источник
Ну ... просто ради сохранения головной боли (здесь уже за полночь) я мог бы придумать:
Надеюсь, поможет
источник
Для меня это прекрасно работает:
источник
Вот ты где
Html
JavaScript
источник
Избавьтесь от события изменения и вместо этого измените значение текстового поля в событии щелчка. Вместо того, чтобы возвращать результат подтверждения, перехватите его в переменной. Если это правда, измените значение. Затем верните вар.
источник
Чекбокс и проверка значения в том же цикле событий - проблема.
Попробуй это:
Демо: http://jsfiddle.net/mrchief/JsUWv/6/
источник
если вы используете iCheck Jquery, используйте приведенный ниже код
источник
Попробуй это
источник
источник
источник
источник
Поздний ответ, но вы также можете использовать
on("change")
источник
просто используйте событие клика, мой идентификатор флажка - CheckAll
источник
получить значение радио по имени
источник
Я не уверен, почему все делают это так сложно. Это все, что я сделал.
источник
источник