0

私はまだ PHP/Javascript/Ajax に不慣れで、この問題のトラブルシューティングに非常に苦労しています (何週間も続いています)。

私のサイトには、すべてのフィールドに入力する必要があるメンバー ページになるための登録があります。これは嚢胞性線維症コミュニティのウェブサイトです。そのため、フォームには嚢胞性線維症との関係を選択するセクションがあります。(I have it/ Some I know has it) I have it を選択すると、ドロップ ダウン ボックスが表示され、Fibro (男性) または Cyster (女性) のオプションが表示されます。私が知っている人を選択すると、別のドロップダウンが開き、さまざまなオプション (叔母、叔父など) が表示されます。

発生する可能性のあるエラーは無数にあります。パスワードが一致しない、キャプチャまたは使用条件がチェックされていない、または入力されていないなどの理由で、ページがリロードされてエラー メッセージが表示されます。ページが以前に選択された情報をロードするように、すべてのオプション値に「echo selected」を入れました。[I have CF] を選択すると、次のようになります。

サインアップ時に、最初に「I have CF」を選択したが、「Cyster または Fibro」の入力を忘れると、エラー メッセージが表示されます。その後、戻って Cyster または Fibro を追加すると、Cyster または Fibro が選択されていることがボックスに表示されていても、CF との関係を入力する必要があると表示され続けます。

私がサインアップしている場合。CF との関係を「I have 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

最善の解決策は、PHP側で(AJAXを使用して)検証し、検証結果をJSONとして返すことです。こちらもご覧ください

于 2010-02-10T18:13:45.220 に答える
1

これを実現する最善の方法は、値の読み込みと検証に JavaScript を使用することです。簡単にするためにフレームワークを使用します。

  • ExtJS
  • 道場
  • JQuery

最もよく知られているもののいくつかです。これらには、AJAX 機能とともに組み込まれたフォームバリデーターがあり、好きなものを簡単に作成できます。

http://www.extjs.com/deploy/dev/examples/form/dynamic.htmlを参照してください

于 2010-02-10T18:06:35.020 に答える