次のドロップダウン リストと、「ブロック」を出力する条件付きチェックを作成しました -> オプションに関連付けられている詳細。たとえば、以下を参照してください。
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 されるように、既存のコードを編集するにはどうすればよいでしょうか?