在表单中提交禁用的输入无法获得价值
Posted
技术标签:
【中文标题】在表单中提交禁用的输入无法获得价值【英文标题】:submit a disabled input in a form could not get value 【发布时间】:2014-10-05 12:48:12 【问题描述】:表格如下;
<form action="sendmail.php" method="get">
<input type="text" name="phone" id="phone" data-clear-btn="true">
<input type="text" name="name" id="name" data-clear-btn="true">
<input disabled="disabled" type="text" name="textinput-disabled" id="textinput-disabled" placeholder="Text input" value="<?php echo $info;?>">
</form>
$info = "type1";并且 $info 在表单中可以正常工作。
但是在sendmail.php中
$name=$_GET['name'];
$type=$_GET['textinput-disabled'];
$phone=$_GET['phone'];
我获得了姓名和电话,但无法获得 textinput-disabled 中的值。 这里有什么问题。
【问题讨论】:
大多数(全部?)浏览器不会在提交表单时发送禁用字段 【参考方案1】:不提交禁用的字段。您可以将其设为只读或隐藏,以便在提交时获取值。
<input readonly type="text" name="textinput-disabled" id="textinput-disabled" placeholder="Text input" value="<?php echo $info;?>">
【讨论】:
【参考方案2】:这是预期的行为。
改为使用
<input readonly type="text"...
或者如果你因为某种原因必须使用disabled,添加一个隐藏字段:
<input disabled="disabled" type="text" name="textinput-disabled" id="textinput-disabled" placeholder="Text input" value="<?php echo $info;?>">
<input type="hidden" name="hidden" value="<?php echo $info;?>">
$name=$_GET['name'];
$type=$_GET['hidden'];
$phone=$_GET['phone'];
【讨论】:
hidden 也是一个不错的选择。但在我的情况下,我猜它不是一个好选择。顺便说一句。感谢您的关注。 @robinclark007 这就是为什么我建议readonly
作为最合适的解决方案....【参考方案3】:
由于禁用input
不能在表单中提交,所以你可以使用readonly="readonly"
,所以在下面使用:
<input readonly="readonly" type="text"
name="textinput-disabled" id="textinput-disabled"
placeholder="Text input" value="<?php echo $info;?>">
有关readonly
的更多信息【讨论】:
【参考方案4】:我遇到了同样的问题,但是有一个复选框。 由于只读值不会更改复选框以使其无法单击,因此我仍然必须使用禁用选项。 所以我只是在复选框下方添加了一个带有所需变量名称的隐藏字段:
<input type = 'checkbox' value = '1' name = 'EnableD_".$NR."' ";if($noti["ACTIVE"]==1)echo " checked "; echo " disabled >
<input type = 'hidden' value = '1' name = 'Enable_".$NR."' ";if($noti["ACTIVE"]==1)echo " checked "; echo " >
【讨论】:
以上是关于在表单中提交禁用的输入无法获得价值的主要内容,如果未能解决你的问题,请参考以下文章