Я все еще новичок в PHP / Javascript / Ajax, и мне очень трудно (уже несколько недель) решить эту проблему.
На моем сайте есть страница регистрации, на которой необходимо заполнить все поля. Это веб-сайт сообщества по муковисцидозу, поэтому в форме есть раздел, в котором вы выбираете свое отношение к муковисцидозу. (У меня есть / у кого-то, кого я знаю, есть). Если вы выберете У меня, появится раскрывающийся список, в котором вам будет предложено выбрать Fibro (мужской) или Cyster (женский). Если вы выберете кого-то, кого я знаю, откроется другой раскрывающийся список с различными вариантами (тетя, дядя и т. Д.)
У меня есть множество возможных ошибок, которые можно сделать. Пароли не совпадают, капча или условия использования не проверены / заполнены и т. Д., Поэтому страница перезагружается, чтобы отобразить сообщение об ошибке. Я поставил "echo selected" во все значения моих параметров, чтобы страница загружала ранее выбранную информацию должным образом. Когда вы выбираете «У меня CF», происходит следующее:
При регистрации - если я выбираю «У меня CF» в первый раз, но забываю ввести «Cyster or Fibro», я получаю сообщение об ошибке. ТОГДА, когда я возвращаюсь и добавляю Cyster или Fibro, он продолжает говорить мне, что мне нужно ввести мое отношение к CF, даже если в поле ПОКАЗАНО, что выбраны Cyster или Fibro.
Если я подписываюсь. Заполнили отношение к CF как «У меня есть CF» И заполнили «Cyster or Fibro», но получили ЛЮБОЕ сообщение об ошибке (неправильный адрес электронной почты, пароли не совпадают и т. Д.), Ответ Cyster или Fibro выпадает (не там) и если я выберу его снова, он не примет мой выбор и продолжит говорить, что «вы должны выбрать свое отношение», даже если он явно выбран.
Как я уже сказал, я боролся с этим в течение нескольких недель, и, насколько я могу судить, мой код выглядит правильным. Я думаю, это как-то связано с Javascript? Вот мой код:
(Пожалуйста, дайте мне знать, если вам понадобится окружающий код, чтобы помочь, спасибо)
<tr>
<td class="left">
<span style="color:#FF0000;">*</span> Relation to CF:
</td>
<td class="right">
<select name="CFDistance" onchange="switch_distance(this);">
<option value="null" disabled selected>choose one</option>
<option value="self" <?php if($_POST['CFDistance'] == "self") { echo "selected"; } ?>>I have CF</option>
<option value="others" <?php if($_POST['CFDistance'] == "others") { echo "selected"; } ?>>Someone I know has CF</option>
</select>
<div id="self_cf_box" class="signup_dropdowns" style="margin:10px 0px 0px 0px;<?php if($_POST['CFDistance'] != "self") { echo "display:none;"; } ?>">
<span style="color:#FF0000;">*</span> I am a
<select id="RelationToCF_self" name="RelationToCF" <?php if($_POST['CFDistance'] != "self") { echo "display:none;"; } ?>>
<option value="null" disabled selected>choose one</option>
<option value="Fibro" <?php if($_POST['RelationToCF'] == "Fibro") { echo "selected"; } ?>>Fibro (male)</option>
<option value="Cyster" <?php if ($_POST['RelationToCF'] == "Cyster") { echo "selected";} ?>>Cyster (female)</option>
</select>
</div>
Вот другой вариант (я знаю кое-кого с CF), который отлично работает:
<div id="others_cf_box" class="signup_dropdowns" style="margin:10px 0px 0px 0px;<?php if($_POST['CFDistance'] != "others") { echo "display:none;"; } ?>">
<span style="color:#FF0000;">*</span> I am this person's
<select id="RelationToCF_others" name="RelationToCF" <?php if($_POST['CFDistance'] != "others") { echo "display:none;"; } ?>>
<option value="null" disabled selected>choose one</option>
<option value="Mom" <?php if ($_POST['RelationToCF'] == "Mom") { echo "selected"; } ?>>Mom</option>
<option value="Dad" <?php if ($_POST['RelationToCF'] == "Dad") { echo "selected"; } ?>>Dad</option>
<option value="Aunt" <?php if ($_POST['RelationToCF'] == "Aunt") { echo "selected"; } ?>>Aunt</option>
<option value="Brother" <?php if ($_POST['RelationToCF'] == "Brother") { echo "selected"; } ?>>Brother</option>
<option value="Caregiver" <?php if ($_POST['RelationToCF'] == "Caregiver") { echo "selected"; } ?>>Caregiver</option>
<option value="Child" <?php if ($_POST['RelationToCF'] == "Child") { echo "selected"; } ?>>Child</option>
<option value="Cousin" <?php if ($_POST['RelationToCF'] == "Cousin") { echo "selected"; } ?>>Cousin</option>
<option value="Friend" <?php if ($_POST['RelationToCF'] == "Friend") { echo "selected"; } ?>>Friend</option>
<option value="Grandma" <?php if ($_POST['RelationToCF'] == "Grandma") { echo "selected"; } ?>>Grandma</option>
<option value="Grandpa" <?php if ($_POST['RelationToCF'] == "Grandpa") { echo "selected"; } ?>>Grandpa</option>
<option value="Guardian" <?php if ($_POST['RelationToCF'] == "Guardian") { echo "selected"; } ?>>Guardian</option>
<option value="Husband" <?php if ($_POST['RelationToCF'] == "Husband") { echo "selected"; } ?>>Husband</option>
<option value="Nephew" <?php if ($_POST['RelationToCF'] == "Nephew") { echo "selected"; } ?>>Nephew</option>
<option value="Niece" <?php if ($_POST['RelationToCF'] == "Niece") { echo "selected"; } ?>>Niece</option>
<option value="Partner" <?php if ($_POST['RelationToCF'] == "Partner") { echo "selected"; } ?>>Partner</option>
<option value="Sister" <?php if ($_POST['RelationToCF'] == "Sister") { echo "selected"; } ?>>Sister</option>
<option value="Uncle" <?php if ($_POST['RelationToCF'] == "Uncle") { echo "selected"; } ?>>Uncle</option>
<option value="Wife" <?php if ($_POST['RelationToCF'] == "Wife") { echo "selected"; } ?>>Wife</option>
</select>
</div>
Вот фрагмент javascript:
<script type="text/javascript">
function switch_distance(el) {
if(el.value == 'self') {
document.getElementById('self_cf_box').style.display = "block";
document.getElementById('RelationToCF_self').disabled = false;
document.getElementById('others_cf_box').style.display = "none";
document.getElementById('RelationToCF_others').disabled = true;
}else{
document.getElementById('self_cf_box').style.display = "none";
document.getElementById('RelationToCF_self').disabled = true;
document.getElementById('others_cf_box').style.display = "block";
document.getElementById('RelationToCF_others').disabled = false;
}
}
</script>