在表单中提交一个禁用的输入框无法获取值

9

表格如下所示:

<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";在表单中使用良好,但在sendmail.php中出现问题。
$name=$_GET['name'];
$type=$_GET['textinput-disabled'];
$phone=$_GET['phone'];
我得到了姓名和电话,但是我无法获取textinput-disabled中的值。这里有什么问题。

3
大多数(全部?)浏览器在提交表单时不会发送已禁用的字段。 - Dennis Schepers
4个回答

24

禁用的字段不会被提交。您可以将其设置为只读或隐藏,以在提交时获取其值。

<input readonly type="text" name="textinput-disabled" id="textinput-disabled" placeholder="Text input" value="<?php echo $info;?>">

6

这是预期行为。

请使用

<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'];

隐藏也是一个不错的选择。但在我的情况下,我猜它不是一个好选择。顺便说一句,感谢您的关注。 - robinclark007
@robinclark007 这就是为什么我建议使用“readonly”作为最合适的解决方案... - Steve

0

我遇到了同样的问题,但是是与复选框有关的。 由于只读值不会改变复选框,以至于无法单击,所以我仍然必须使用禁用选项。 因此,我只需在复选框下方添加一个带有所需变量名称的隐藏字段:

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

0

由于禁用的 input 无法在表单中提交,因此您可以使用 readonly="readonly",请使用以下代码:

<input readonly="readonly" type="text" 
       name="textinput-disabled" id="textinput-disabled" 
       placeholder="Text input" value="<?php echo $info;?>">

有关只读的更多信息,请参见


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接