Переключатель Jquery после перезагрузки страницы

0

У меня есть форма, в которой, если выбран переключатель, пользователю предлагается дополнительное текстовое поле. Для этого я использую следующий jQuery:

$(document).ready(function(){
    $('input:radio[name="accountType"]').change(function() {
        if ($(this).val() == 'typeA'){
            //show the hidden layer
            $( "#additionalQuestion" ).show("slow");
           }
        if ($(this).val() == 'typeB'){
            //show the hidden layer
            $( "#additionalQuestion" ).hide("slow");
           }
    });
});

Все работает отлично, если пользовательские ответы не завершили мою проверку формы PHP, и в этом случае форма повторно отображается (с ответами пользователя, введенными через PHP). На этом этапе слой #additionalQuestion больше не отображается, даже если выбран соответствующий переключатель. Как я могу убедиться, что слой #additionalQuestion остается видимым в этом случае?

  • 0
    Наряду с отображением / скрытием слоя при «изменении», вы можете проверить значение переключателя в документе «загрузить» и показать или скрыть на основе этого.
Теги:
radio
page-refresh

3 ответа

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

Там же вы вводите элементы формы, вводите переменную JavaScript, которую ваш $(document).ready() может забрать

В PHP

if ($form_failed)
    echo '<script>var showAdditionalQuestion = 1;</script>';

Тогда в JS

$(document).ready(function(){
    if (showAdditionalQuestion)
        $('#showAdditionalQuestion').show();
});

(Или просто введите код так, чтобы показать раздел напрямую)

Это, вероятно, более гибкое и надежное, чем просто проверка того, установлен ли флажок при загрузке (что, если вводится ввод формы, но вы не хотите показывать этот раздел при загрузке?), Но это альтернатива

  • 0
    Спасибо! Это прекрасно работает и было очень легко добавить в мой существующий код.
0

Как упоминалось в комментарии @Poornima в комментарии, вы можете запустить проверку как при выборе переключателя, так и при загрузке страницы.

$(document).ready(function() {

    function checkForAdditionalQuestion() {
        if ($(this).val() == 'typeA'){
            //show the hidden layer
            $( "#additionalQuestion" ).show("slow");
        }
        if ($(this).val() == 'typeB'){
            //show the hidden layer
            $( "#additionalQuestion" ).hide("slow");
        }
    }

    checkForAdditionalQuestion();

    $('input:radio[name="accountType"]').change(function() {
        checkForAdditionalQuestion();
    });
});
0

Попробуйте добавить это внутри doc.ready:

if ($('input:radio[name="accountType"]').val() == 'typeA') {
  $( "#additionalQuestion" ).show();
}

Ещё вопросы

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