我正在尝试根据用户在下拉菜单中选择的选项发送隐藏值 虽然目前需要按两次提交按钮。
我有什么方法可以解决这个问题,或者我应该使用不同的方法吗?
这就是我现在所拥有的:
<form name="input" action="<?php echo $_SERVER['PHP_SELF'];?>" method="get" onchange="this.form.submit()">
<select name="myValue" value="">
<option value="300"<?php if ($_GET['myValue']==300) {echo "selected='selected'"; } ?>>First Option</option>
<option value="800"<?php if ($_GET['myValue']==800) {echo "selected='selected'"; } ?>>Second Option</option>
</select>
<?php if ($_GET['myValue']==300) {echo "<input type='hidden' name='hiddenValue' id='hiddenValue' value='123456'><br />"; } ?>
<?php if ($_GET['myValue']==800) {echo "<input type='hidden' name='hiddenValue' id='hiddenValue' value='987456'><br />"; } ?>
<input type="submit" value="Submit" />
</form>
<?php
echo "myValue: " . $_GET['myValue'];
echo "<br />";
echo "hiddenValue: " . $_GET['hiddenValue'];
?>
答案 0 :(得分:0)
为什么在按下提交后不在php脚本中添加隐藏值。如果选择了选项A,则$ hiddenvalue = X.否则,如果选择了选项B,则$ hiddenvalue = y。
<?php
$selection = $_GET['myValue'];
if ($selection == 1) {
$hidden = "x";
} elseif ($selection == 2) {
$hidden = "y";
}
echo $selection;
echo "<br />";
echo $hidden;
?>
答案 1 :(得分:0)
为什么不在表单中使用POST方法而不是GET,
<?php
echo "myValue: " . $_POST['myValue'];
echo "<br />";
echo "hiddenValue: " . $_POST['hiddenValue'];
?>
答案 2 :(得分:0)
您可以将隐藏值用作选项的值:
这是我的建议:
<form name="input" action="<?php echo $_SERVER['PHP_SELF'];?>" method="get" onchange="this.form.submit()">
<select name="myValue" value="">
<option value="123456"<?php if ($_GET['myValue']==300) {echo "selected='selected'"; } ?>>First Option</option>
<option value="987456"<?php if ($_GET['myValue']==800) {echo "selected='selected'"; } ?>>Second Option</option>
</select>
<input type="submit" value="Submit" />
</form>
或使用javascript函数并在无法更改option
值时进行ajax调用
希望这有帮助!
答案 3 :(得分:0)
为什么不尝试获取下拉框的值并在提交表单之前根据用户在下拉列表中选择的内容添加隐藏框?
也许是这样的:http://jsfiddle.net/7sXXy/
formSubmit() {
var select = $("#select");
if(select.val() == 300) {
select.after("<input type='hidden'/ name='hidden' value='1'/>");
}else{
select.after("<input type='hidden'/ name='hidden' value='2'/>");
}
return true;
}
答案 4 :(得分:0)
在不知道您最终想要对这些数据做什么的情况下,我能做的最好的就是满足这个特定的用例。假设您可能想要做一些更复杂的事情,那么您必须做出一些修改。
<form name="input" action="<?php echo $_SERVER['PHP_SELF'];?>" method="get" onchange="this.form.submit()">
<select name="myValue" value="">
<option value="300"<?php if ($_GET['myValue']==300) {echo "selected='selected'"; } ?>>First Option</option>
<option value="800"<?php if ($_GET['myValue']==800) {echo "selected='selected'"; } ?>>Second Option</option>
</select>
<input type="submit" value="Submit" />
</form>
<?php
$myValue = $_GET['myValue'];
echo "myValue: " . $myValue;
echo "<br />";
echo "hiddenValue: " . ($myValue == 300 ? 123456 : ($myValue == 800 ? 987456 : ''));
?>
答案 5 :(得分:0)
我建议使用javascript函数在提交时读出所选选项并用它填充隐藏字段
<script>
function fillhiddenformfield(formobj)
{
// the select element
var se = formobj.myValue;
// the selected value
var sv = se.options[se.selectedIndex].value;
// set the hidden field
formobj.hiddenValue.value = sv;
// return true to submit the form
return true;
}
</script>
<? // action is obsolete here as your are sending to this script ?>
<form name="input" method="get" onsubmit="fillhiddenformfield(this)">
<select name="myValue" value="">
<option value="300"<?php if ($_GET['myValue']==300) {echo "selected='selected'"; } ?>>First Option</option>
<option value="800"<?php if ($_GET['myValue']==800) {echo "selected='selected'"; } ?>>Second Option</option>
</select>
<input type='hidden' name='hiddenValue' id='hiddenValue'>