0

我还是 PHP/Javascript/Ajax 的新手,并且很难(已经持续了数周)解决这个问题。

我的网站注册为会员页面,需要填写所有字段。这是囊性纤维化社区的网站,因此表格上有一个部分,您可以在其中选择您与囊性纤维化的关系。(我拥有它/我认识的人拥有它)如果您选择我拥有它,则会出现一个下拉框,并为您提供 Fibro(男性)或 Cyster(女性)选项。如果您选择我认识的人,则会打开一个不同的下拉菜单,其中包含各种选项(阿姨、叔叔等)

我有无数可能犯的错误。密码不匹配、验证码或未检查/填写使用条款等...因此页面重新加载以显示错误消息。我在所有选项值中都添加了“选择的回声”,以便让页面按应有的方式加载先前选择的信息。当您选择“我有 CF”时,会发生以下情况:

注册时 - 如果我第一次选择“我有 CF”但忘记填写“Cyster 或 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>
4

2 回答 2

1

完成此操作的最佳方法是使用 JavaScript 加载值和验证。我会使用一个框架来使它更容易。

  • ExtJS
  • 道场
  • jQuery

是一些最知名的。这些具有内置的表单验证器以及 AJAX 功能,使您的喜欢更容易。

请参阅http://www.extjs.com/deploy/dev/examples/form/dynamic.html

于 2010-02-10T18:06:35.020 回答
1

最好的解决方案是在 PHP 端进行验证(使用 AJAX)并将验证结果作为 JSON 返回。也见这里

于 2010-02-10T18:13:45.220 回答