Эта функция не регистрирует никаких значений после первого щелчка флажка, только со второго щелчка. Может ли кто-нибудь понять, почему?
<script type="text/javascript">
function validateDays() {
$('#my_div').find('input[type="checkbox"]').click(function () {
var pass = parseInt($('input[name="other_1"]:checked').val(), 10) // 1, 2, 3
var days = $('#my_div').find('input[type="checkbox"]:checked').length;
console.log(days, pass);
if (days == pass) {
$('#my_div').find('input[type="checkbox"]').not(':checked').prop('disabled', true);
}
else {
$('#my_div').find('input[type="checkbox"]').not(':checked').prop('disabled', false);
}
});
$('input[name="other_1"]').change(function () {
$('#my_div').find('input[type="checkbox"]').prop({
'checked': false,
'disabled': false
});
if (parseInt($(this).val(), 10) == 3) {
$('#my_div').find('input[type="checkbox"]').prop({
'checked': true,
'disabled': false
});
}
});
}
</script>
Консоль не показывает никаких ошибок или предупреждений.
Если вы хотите попробовать код, перейдите по этой ссылке:
https://secure.ukipme.com/forms_conf/mmx14c/conf_form_new.php
(Требуется раздел "Проход в день/день", который вам нужен... выбор правильного количества дней для выбранного типа прохода автоматически отключает другие дни, т.е. Выберите 2-дневный проход, а после того, как вы выбрали два дня, третий флажок отключается. Однако он не работает для сеанса (1 день), пока вы не дважды нажали.
Функция проверки называется onclick
, для всех/любых <input name="other_2" type="checkbox" id="other_2" value="YES" onClick="validateDays();">
: <input name="other_2" type="checkbox" id="other_2" value="YES" onClick="validateDays();">
С кодом
<input name="other_2" type="checkbox" id="other_2" value="YES" onClick="validateDays();">
Обработчик кликов не регистрируется, пока вы его не нажмете. Если вы привяжете это к готовому, а:
$(document).ready(function() {
$('#my_div').find('input[type="checkbox"]').click(function () {
var pass = parseInt($('input[name="other_1"]:checked').val(), 10) // 1, 2, 3
var days = $('#my_div').find('input[type="checkbox"]:checked').length;
console.log(days, pass);
if (days == pass) {
$('#my_div').find('input[type="checkbox"]').not(':checked').prop('disabled', true);
}
else {
$('#my_div').find('input[type="checkbox"]').not(':checked').prop('disabled', false);
}
});
$('input[name="other_1"]').change(function () {
$('#my_div').find('input[type="checkbox"]').prop({
'checked': false,
'disabled': false
});
if (parseInt($(this).val(), 10) == 3) {
$('#my_div').find('input[type="checkbox"]').prop({
'checked': true,
'disabled': false
});
}
});
});
затем удалите onclick:
<input name="other_2" type="checkbox" id="other_2" value="YES">
как $(..).click();
Является ли это.
validateDays
?<input name="other_2" type="checkbox" id="other_2" value="YES" onClick="validateDays();">
:<input name="other_2" type="checkbox" id="other_2" value="YES" onClick="validateDays();">