Почему эта функция только войти в консоль после двух кликов?

0

Эта функция не регистрирует никаких значений после первого щелчка флажка, только со второго щелчка. Может ли кто-нибудь понять, почему?

<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();">

  • 1
    Когда вызывается функция validateDays ?
  • 0
    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();">
Показать ещё 6 комментариев
Теги:

1 ответ

1
Лучший ответ

С кодом

<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(); Является ли это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню