当提交表单时,一个禁用的文本字段是否会被提交?

24
如果我通过POST提交一个已禁用的文本字段,那么在操作页面上得到的值将是什么? 例如,我有:
<table border=0 cellpadding=4 cellspacing=0>
<tr><td>
   <input type="checkbox" id="chk_$item" 
    onClick="javascript:handleClick('$item')">
</td><td>
   <input type="text" id="txt_$item" name="addresses[]" value="$item">
</td></tr>
<tr><td>
   ...etc...
</td></tr>
</table>

JavaScript函数handleClick()检查是否选中了chk_$item,如果没有,则禁用txt_$item文本字段。

当我提交表单后,所有的文本字段都会被传递到一个PHP脚本的addresses[]数组中。

但是,如果禁用了文本字段,我能否防止它们提交任何内容呢?它会默认这样做吗?如果不是,默认行为应该如何更改?(我真的不想在禁用时清除这些字段)。

2个回答

62

25
如果您不想更改它,请将其设置为只读

简单来说:只读不满足OP的需求。如果我理解正确,OP明确想要从提交中排除字段。听起来相似,但本质上这是完全不同的事情。这不是关于在客户端保护字段内容,而是关于减少服务器端接收到的提交数据集。chaos建议使用禁用输入。我从早期的测试中知道,“只读”和“禁用”在不同的Web浏览器中甚至看起来不同,实际上并不相同。 - hasienda
1
这段代码最好写成注释,并且阅读为“或者,如果你不想改变它……”。它并不能满足 OP 的问题。这是一种对另一个问题的替代解决方案。 - Citizen

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