我有一个选择表单字段,我想标记为“readonly”,因为用户不能修改该值,但该值仍然与表单一起提交。使用disabled属性可以防止用户更改值,但不会将值与表单一起提交。
readonly属性仅适用于输入和文本区域字段,但这基本上是我想要的。有办法让它工作吗?
我考虑的两种可能性包括:
不是禁用选择,而是禁用所有选项,并使用CSS将选择变成灰色,这样它看起来就像禁用了一样。 向提交按钮添加单击事件处理程序,以便在提交表单之前启用所有禁用的下拉菜单。
我有一个选择表单字段,我想标记为“readonly”,因为用户不能修改该值,但该值仍然与表单一起提交。使用disabled属性可以防止用户更改值,但不会将值与表单一起提交。
readonly属性仅适用于输入和文本区域字段,但这基本上是我想要的。有办法让它工作吗?
我考虑的两种可能性包括:
不是禁用选择,而是禁用所有选项,并使用CSS将选择变成灰色,这样它看起来就像禁用了一样。 向提交按钮添加单击事件处理程序,以便在提交表单之前启用所有禁用的下拉菜单。
当前回答
我制作了一个快速(Jquery only)插件,当输入被禁用时,将值保存在数据字段中。 这只是意味着,只要该字段通过jquery使用.prop()或.attr()被程序化禁用…然后通过.val(), .serialize()或.serializeArra()访问该值将始终返回该值,即使禁用:)
无耻插头:https://github.com/Jezternz/jq-disabled-inputs
其他回答
对于选择字段,它不能使用:input选择器,使用这个:
jQuery(function() {
jQuery('form').bind('submit', function() {
jQuery(this).find(':disabled').removeAttr('disabled');
});
});
我一直在寻找一个解决方案,因为我没有找到一个解决方案在这个线程我做了我自己。
// With jQuery
$('#selectbox').focus(function(e) {
$(this).blur();
});
很简单,当你关注它的时候,你只是模糊了这个域,就像禁用它一样,但是你实际上发送了它的数据。
我制作了一个快速(Jquery only)插件,当输入被禁用时,将值保存在数据字段中。 这只是意味着,只要该字段通过jquery使用.prop()或.attr()被程序化禁用…然后通过.val(), .serialize()或.serializeArra()访问该值将始终返回该值,即使禁用:)
无耻插头:https://github.com/Jezternz/jq-disabled-inputs
我发现最简单的方法是创建一个小的javascript函数绑定到你的表单:
function enablePath() {
document.getElementById('select_name').disabled= "";
}
你在这里的表格中称它为
<form action="act.php" method="POST" name="form_name" onSubmit="enablePath();">
或者你可以在你用来检查你的表单的函数中调用它:)
或者使用一些JavaScript更改选择的名称,并将其设置为禁用。这样,选择仍然被提交,但是使用了一个您不检查的名称。