Как отключить функцию .change при загрузке страницы

0

В моей функции $(document).ready() меня есть событие .change связанное с набором или переключателями. Если в форме, которую пользователь представляет, появляется ошибка, страница перезагружается со значениями, выбранными пользователем. Это приводит к .change функция переключателя .change каждый раз при загрузке страницы, что я не хочу делать. Как я могу отключить это?

РЕДАКТИРОВАТЬ

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

FYI. Если после отправки пользователем формы возникла ошибка, мне нужна страница для загрузки формы, как это было, когда пользователь нажал кнопку отправки. Поскольку мы отображаем определенный набор элементов div и span на основе выбора переключателя, я использовал метод trigger('change'). Есть ли способ определить, происходит ли операция во время загрузки страницы?

    $('input[name=TransactionType]').change(function (e) {
        //Clear any messages from previous transaction
        $('.error').text('');
        $('.success').text('');

        //Display fieldset Submit and Cancel(back to search) link
        $('#PageDirection').show();
        $('#AgentInformation').show();

        //Display input fields
        var radioValue = $(this);

        if (radioValue.attr('id') == "Enroll" || (radioValue.attr('id') == "ModT")) {
            //Enable and disable input boxes
            $('span').not('#AllInput').hide();
            $('#AllInput').show();
            $('#PayFrequency').show();
            $('#refNumberInput').show();

            //Set tooltips
            $('#AccountType').removeAttr("title");
            if (radioValue.attr('id') == "Enroll") {
                $('#PaymentFrequency').removeAttr("title");
                $('.req').show();
                $('#refNumberInput').show();
                $('#enrollNote').show();
            } else {
                $('#PaperStatement').show();
                $('#PaymentFrequency').attr("title", "Select the frequency to pay the distributor");
                $('#refNumberInput').show();
            }
        } else if (radioValue.attr('id') == "New") {
            $('span').not('#NewMessage').hide();
            $('#NewMessage').show();
            $('.req').show();
            $('#refNumberInput').show();

        } else if (radioValue.attr('id') == "ModA") {
            $('#AllInput').show();
            $('#AgentIdSpan').show();
            $('.req').show();
            $('#UnenrollMessage').hide();
            $('#NewMessage').hide();
            $('#PayFrequency').hide();
            $('#PaperStatement').hide();
            $('#refNumberInput').show();
            $('#AgentId').attr("title", "Enter the Agent ID to be modified");

        } else if (radioValue.attr('id') == "Clone") {
            $('span').not('#AgentIdSpan').hide();
            $('#AgentIdSpan').show();
            $('.req').show();
            $('#AgentId').attr("title", "Clone EFT onto this Agent ID");

        } else if (radioValue.attr('id') == "Unenroll") {
            $('span').not('#UnenrollMessage').hide();
            $('#UnenrollMessage').show();
            $('.req').show();
            $('#refNumberInput').show();

        }

        if (radioValue.attr('id') != "Clone") {
            $('.alwaysReq').show();
        };
    }).filter(':checked').trigger('change');

3 ответа

0

document.ready обычно не вызывает изменение функции. Он будет вызван только в том случае, если вы вручную измените флажок или одно и то же событие под влиянием какой-либо другой функции, но не в document.ready.

Удалите метод .trigger('change') поскольку он вызовет метод изменения document.ready

  • 0
    К сожалению, если пользователь вводит ошибку, форму необходимо перезагрузить точно так же, как это было, когда пользователь нажал "Отправить". Так как мы используем .change событие для отображения определенного набора divs и spans , я (думает) мне нужно использовать .trigger метод.
0

вы можете использовать "on" или "делегировать" внутри функции jquery ready. как это:

   $(document).delegate("input[name=TransactionType]","change", function(){
        $('.error').text('');
        $('.success').text('');
   });
0

Если вы не заботитесь о автозаполнении, вы можете поставить autocomplete="off" в form. Вы также можете сравнить текущее значение поля с его значением по умолчанию, чтобы узнать, было ли оно автоматически заполнено браузером.

Ещё вопросы

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