【问题标题】:Is Javascript causing my form to not echo selected once error reloads the page?一旦错误重新加载页面,Javascript是否会导致我的表单不回显?
【发布时间】:2010-02-09 22:21:05
【问题描述】:

我还是 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>

【问题讨论】:

    标签: php javascript html ajax options


    【解决方案1】:

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

    • ExtJS
    • 道场
    • jQuery

    是一些最知名的。它们具有内置的表单验证器和 AJAX 功能,让您的喜欢更轻松。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-20
        • 2014-06-10
        • 1970-01-01
        相关资源
        最近更新 更多