<select class="txtbx1" name="country" disabled>
<option value='FR' >FRANCE</option><option value='CH' selected>SWITZERLAND</option>
</select>
上面的代码,其方法是POST
但echo $_POST['country']
是否显示在另一方面没什么..如果我从选择$_POST['country']
删除禁用正显示出正确的结果
<select class="txtbx1" name="country" disabled>
<option value='FR' >FRANCE</option><option value='CH' selected>SWITZERLAND</option>
</select>
上面的代码,其方法是POST
但echo $_POST['country']
是否显示在另一方面没什么..如果我从选择$_POST['country']
删除禁用正显示出正确的结果
表单标签的外观如何?你可能已经忘记了method="post"
属性...
不,我没有..事情有效,但我没有“禁用”属性 –
这是怎么disabled
属性适用。当表单控件被禁用时,当提交表单并且该键不会出现在$_POST
(或$_GET
)中时,该值将被忽略。
如果您希望该值存在于提交的数据中,但您不希望用户能够更改页面上的值(我想可能是您尝试获得的值),请改为使用readonly="readonly"
disabled="disabled"
。
EDIT
的<select>
元件不具有readonly
属性。以上信息仍然如此将工作为<input>
s和<textarea>
s。
解决您的问题,这里将是禁用的选择并使用隐藏的输入值发送回服务器 - 例如
当选择启用:
<select class="txtbx1" name="country">
<!-- options here -->
</select>
...而当它被禁用:
<select class="txtbx1" name="country_disabled" disabled="disabled">
<!-- options here, with appropriate value having `selected="selected"` -->
</select>
<input type="hidden" name="country" value="value_of_field" />
我不认为'只读'在'
@Rocket确实没有,我只是在发布后测试过,并且它不起作用。我的答案仍然有效,因为它适用于'',但我会更新它关于'
+1的隐藏输入。 –
这是正确的行为。 disabled
禁用该元素,并且在表单被POST时不会发送它的值。
在提交表单之前,您可以使用JavaScript取消禁用表单。事情是这样的(未经测试):使用
document.getElementById('myForm').addEventListener('submit', function() {
for(var i = 0; i < this.children.length; i++){
var child = this.children[i];
if(child.disabled){
child.disabled = false;
}
}
});
+1,虽然糟糕的做法依靠JS的核心网站功能 - JS应该用于增强网站,而不是使其工作;-) – DaveRandom
@Dave:同意,只是一个替代解决方案给你。 –
那么,如果我们没有提到所有的东西,我们就会失业 – DaveRandom
尝试'禁用=“禁用”'而不是 – Teneff
禁用某个字段,它的价值不提交到服务器。 – Guttsy
然后我在这种情况下做什么shud ..我需要禁用字段 –