#javascript #jquery #checkbox
#javascript #jquery #флажок
Вопрос:
У меня есть подсказки, которые выдают всплывающее окно, когда флажок установлен и снят. Похоже, что там есть строка избыточного кода, но после удаления функции больше не работают. Так что, может быть, не так уж и избыточно 🙂 Но #id ничему не соответствует (в настоящее время в качестве ЗАГЛАВНЫХ букв задано значение не совпадать)
Есть идеи, почему это мешает?
$('#checkbox').click(function() {
if ($("#checkbox").is(':checked')) {
if (confirm('Are you sure you want to CONFIRM the order?')) {
$('#CHECKBOX').click();
}
}
});
$("#checkbox").on('change', function() {
this.checked = !this.checked ? !confirm('Do you really want to change this to NOT RECEIVED?') : true;
});
Комментарии:
1. комментирование
$('#CHECKBOX').click();
ничего не меняет2. Я также удалил открывающий {}, который был обернут вокруг них, когда я это делал, возможно, это было бы причиной сбоя функции. Однако, если там ничего нет, не следует ли их удалять?
Ответ №1:
Вот что, я думаю, вы имеете в виду
$('#checkbox').click(function() {
if (this.checked) {
this.checked = confirm('Are you sure you want to CONFIRM the order?'));
}
else {
this.checked = !confirm('Do you really want to change this to NOT RECEIVED?');
}
});
Ответ №2:
Используйте классы вместо идентификаторов, поэтому теперь необходим избыточный код. Вы можете хранить информацию в data
атрибуте HTML-элемента. jsFiddle.
Я добавил класс к каждому флажку, который должен быть проверен.
$(".checkIt").on('change', function() {
if ($(this).is(':checked')) {
confirm('Do you really want to change ' $(this).data('id') ' to NOT RECEIVED?');
}
});
HTML
<input type="checkbox" data-id="checkbox1" class="checkIt" />
<input type="checkbox" data-id="checkbox2" class="checkIt" />
<input type="checkbox" data-id="checkbox3" class="checkIt" />
Комментарии:
1. по щелчку — лучшее событие, на мой взгляд. Некоторым браузерам требуется размытие для запуска изменений
2. подскажите мне браузер, подобный этому.
3. Наверняка некоторые старые. Смотрите более старую спецификацию — изменение : элемент управления теряет фокус ввода, и его значение было изменено с момента получения фокуса. Этот тип события должен быть отправлен до размытия типа события.
4. Вы дали мне спецификацию, а не браузер. Бьюсь об заклад, что 99,9% современных пользователей знают об изменении, даже IE9 (у меня его нет, не могу протестировать)
5. Но кого волнует, что click делает то же самое без возможности сбоя в любом браузере? На нашем сайте все еще 10% посетителей IE8