在表单中提交禁用的输入无法获得价值

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 " >

【讨论】:

以上是关于在表单中提交禁用的输入无法获得价值的主要内容,如果未能解决你的问题,请参考以下文章

laravel动态下拉不给价值

你如何使用角度javascript获得表单的价值?

在c中使用struct时无法获得价值[关闭]

MaskedTextBoxFor 在提交 MVC Razor 视图后失去价值

为什么我无法获得价值?

jquery禁用表单提交