У меня есть форма, в которой, если выбран переключатель, пользователю предлагается дополнительное текстовое поле. Для этого я использую следующий 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 остается видимым в этом случае?
Там же вы вводите элементы формы, вводите переменную JavaScript, которую ваш $(document).ready()
может забрать
В PHP
if ($form_failed)
echo '<script>var showAdditionalQuestion = 1;</script>';
Тогда в JS
$(document).ready(function(){
if (showAdditionalQuestion)
$('#showAdditionalQuestion').show();
});
(Или просто введите код так, чтобы показать раздел напрямую)
Это, вероятно, более гибкое и надежное, чем просто проверка того, установлен ли флажок при загрузке (что, если вводится ввод формы, но вы не хотите показывать этот раздел при загрузке?), Но это альтернатива
Как упоминалось в комментарии @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();
});
});
Попробуйте добавить это внутри doc.ready:
if ($('input:radio[name="accountType"]').val() == 'typeA') {
$( "#additionalQuestion" ).show();
}