【发布时间】:2015-09-10 02:46:09
【问题描述】:
我创建了以下下拉列表以及将输出“块”-> 与选项关联的详细信息的条件检查。见下文,例如:
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',例如,如果我要选择选项列表中的“Others”并键入相应字段,然后提交表单,值将 POST 到控制器代码,错误日志不仅会显示“OthersNum”的值,还会显示 NumChosen 的详细信息.这不是我想要的结果,我正在查看错误日志,仅发布已为“其他”选项输入的详细信息,而不显示与其他选项相关的详细信息
因此,显示了冗余的 error_log,据我了解,表单中的所有值都是 POST 到控制器的。因此,我如何能够编辑现有代码,以便仅将选定的选项发布到控制器?
【问题讨论】:
-
有什么问题?您无法读取 POST 请求中的表单字段吗?
-
@RayonDabre 问题:当我将表单字段中的值发布到控制器代码时,error_log 会发布所有详细信息,而不是我想要的。我只希望错误日志发布与所选选择列表关联的详细信息。在这个时间点,它正在发布所有内容,我怎么能只显示在选择列表中选择的内容的详细信息
-
如果您不想发布这些表单字段,您需要将它们从 DOM 中删除或将其属性设置为
disabled。 Morover,您可以简单地在您的 php 代码中添加一个条件,并选择相应的选项.. -
@RayonDabre,如果我将这些字段设置为禁用,即使选择了这些详细信息的选项,它也不会显示。我需要仅在选择该选项时显示详细信息。 php代码中的条件?例如?
-
您可以根据选项的选择使用属性,就像您正在显示详细信息一样。在 php 端你可以检查
if($_POST['whatever_you_want'])
标签: javascript jquery model-view-controller drop-down-menu selectlistitem