0

次のドロップダウン リストと、「ブロック」を出力する条件付きチェックを作成しました -> オプションに関連付けられている詳細。たとえば、以下を参照してください。

function val(ddbox) {

         //NEW
        if ( ddbox.options[ddbox.selectedIndex].value == "Others"){
                document.getElementById("extradiv").style.display = "block";
        }else{
                document.getElementById("extradiv").style.display = "none";
        }
         if( ddbox.options[ddbox.selectedIndex].value != "Others"){
                document.getElementById("NumberChosen").style.display = "block";
        }else{
                document.getElementById("NumberChosen").style.display = "none";
        }
}
 <li class="bigfield">
                        <select name ="ddbox" id="ddbox" onchange = "val(this)">
                        <option value ="0"> Select Number..</option>
                        <option value ="Option 1"> 1</option>
                        <option value ="Option 2"> 2</option>
                        <option value ="Option 3"> 3</option>
                        <option value = "Others"> Others</option>
                        </select>
                </li>


                <!--when user select "Others"-->
                <div id = "extradiv" style ="display:none">
                <li class="bigfield"><input placeholder="Enter your Num" type="text" name="OthersNum" id="OthersNum"/></li>
                <li class="bigfield"><input placeholder="Number Characteristics" type="text" name="NumberOthersCharacteristics" id="NumberOthersCharacteristics"/></li>
                <li class="bigfield"><input placeholder="why do you like this number" type="text" name="NumberOthersLikefactor" id="NumberOthersLikefactor"/></li>
                 </div>

                 <!--when user select other options-->
                <div  id = "NumberChosen" style ="display:none" >
               <li class="bigfield"><input value="NumChosen" type="text" name="NumChosen" id="NumChosen" readonly></li>
                <li class="bigfield"><input value="Num Chosen Characteristic" type="text" name="NumChosenCharactersitics" id="NumChosenCharactersitics" readonly/></li>
                <li class="bigfield"><input value="Num Chosen Likes" type="text" name="NumChoseLikes" id="NumChoseLikes" readonly/></li>
                 </div>

の詳細を参照するように選択した各オプションを作成しました。ユーザーが「その他」をクリックすると、 の入力フィールドが参照されます。したがって、フィールド フォームは MVC フレームワークのビュー内で行われます。

送信時に値がコントローラー コードに正しく POST されるようにするために、コントローラー コード内に次のエラー ログを作成し、フォームから取得された値を確認しました。示されているように、次の error_logs:

       error_log(date("Y-m-d H:i:s")."_ipad,Num: ".$_POST['OthersNum']."\n",3,"/var/tmp/*/*.log");
       error_log(date("Y-m-d H:i:s")."_-ipad, NumChar: ".$_POST['NumberOthersCharacteristics']."\n",3,"/var/tmp/*/*.log");
       error_log(date("Y-m-d H:i:s")."_-ipad, NumLikes: ".$_POST['NumberOthersLikefactor']."\n",3,"/var/tmp/*/*.log");

       error_log(date("Y-m-d H:i:s")."_-ipad,NumberChosen: ".$_POST['NumChosen']."\n",3,"/var/tmp/*/*.log");
       error_log(date("Y-m-d H:i:s")."_-ipad, NumChosenChar: ".$_POST['NumChosenCharacteristics']."\n",3,"/var/tmp/*/*.log");           error_log(date("Y-m-d H:i:s")."_-ipad, NumChosenLikes: ".$_POST['NumChoseLikes']."\n",3,"/var/tmp/*/*.log");

さて、これが私が直面している主な問題です。次の端末コマンドを実行すると、両方のエラー ログが常に表示されます。たとえば、オプションで「その他」を選択すると、「tail -f *.log」それぞれのフィールドにリストとキーを入力してフォームを送信すると、値がコントローラ コードに POST され、エラー ログに「OthersNum」の値だけでなく、NumChosen の詳細も表示されます。これは私が望む結果ではありません。「その他」オプションに入力された詳細のみを投稿するエラー ログを見ており、他のオプションに関連する詳細も表示されません。

したがって、冗長な error_log が表示されます。私が理解していることから、フォームのすべての値はコントローラーに POST されます。したがって、選択された選択されたオプションのみがコントローラーに POST されるように、既存のコードを編集するにはどうすればよいでしょうか?

4

1 に答える 1

0

問題は if ステートメントにあると思います。同じ条件に複数の if ステートメントを使用したくない場合は、if ステートメントを次のようにする必要があります。

function val(ddbox) {
        if ( ddbox.options[ddbox.selectedIndex].value == "Others"){
                document.getElementById("extradiv").style.display = "block";
               document.getElementById("NumberChosen").style.display = "none";
        }else{
                document.getElementById("extradiv").style.display = "none";
                document.getElementById("NumberChosen").style.display = "block";
        }
}

同様の条件には単一のifステートメントを使用してください。これが機能することを願っています...

于 2015-09-11T05:02:55.250 に答える