Я все еще новичок в PHP / Javascript / Ajax, и мне очень трудно (неделями) заниматься решением этой проблемы.
Мой сайт зарегистрирован, чтобы стать участником, требующим заполнения всех полей. Это веб-сайт сообщества Cystic Fibrosis, поэтому в форме есть раздел, в котором вы выбираете свое отношение к Cystic Fibrosis. (У меня есть / у кого-то, кого я знаю, есть). Если вы выберете «У меня есть», появится выпадающий список, в котором вы можете выбрать Fibro (мужчина) или Cyster (женщина). Если вы выбираете кого-то, кого я знаю, открывается другой выпадающий список с различными параметрами (тетя, дядя и т. Д.)
У меня есть множество возможных ошибок, которые могут быть сделаны. Пароли не совпадают, код проверки или условия использования не проверены / не заполнены и т. Д., Поэтому страница перезагружается для отображения сообщения об ошибке. Я добавил «echo selected» во все мои значения параметров, чтобы страница загружала ранее выбранную информацию, как и должно быть. Когда вы выбираете «У меня есть CF», вот что происходит:
При регистрации - если я выбираю «У меня CF» в первый раз, но забываю заполнить «Cyster or Fibro», я получаю сообщение об ошибке. ПОТОМ, когда я возвращаюсь и добавляю Cyster или Fibro, он продолжает говорить мне, что мне нужно ввести свое отношение к CF, хотя в поле выбора Cyster или Fibro ПОКАЗЫВАЕТСЯ.
Если я зарегистрируюсь. Заполнить отношение к CF как «У меня есть CF» И заполнить «Cyster или 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>