HTML表单只读选择标记/输入
根据HTML规范,HTML中的select
标签没有readonly
属性,只有一个disabled
属性。 所以如果你想让用户不想改变下拉菜单,你必须使用disabled
。
唯一的问题是禁用的HTML表单输入不会包含在POST / GET数据中。
模拟select
标签的readonly
属性的最好方法是什么,仍然可以获取POST数据?
您应该保持disabled
select
元素,但也要添加具有相同名称和值的另一个隐藏input
。
如果您重新启用SELECT,则应将其值复制到onchange事件中的隐藏输入中,并禁用(或删除)隐藏的输入。
这里是一个演示:
$('#mainform').submit(function() {
$('#formdata_container').show();
$('#formdata').html($(this).serialize());
return false;
});
$('#enableselect').click(function() {
$('#mainform input[name=animal]')
.attr("disabled", true);
$('#animal-select')
.attr('disabled', false)
.attr('name', 'animal');
$('#enableselect').hide();
return false;
});
#formdata_container {
padding: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<form id="mainform">
<select id="animal-select" disabled="true">
<option value="cat" selected>Cat</option>
<option value="dog">Dog</option>
<option value="hamster">Hamster</option>
</select>
<input type="hidden" name="animal" value="cat"/>
<button id="enableselect">Enable</button>
<select name="color">
<option value="blue" selected>Blue</option>
<option value="green">Green</option>
<option value="red">Red</option>
</select>
<input type="submit"/>
</form>
</div>
<div id="formdata_container" style="display:none">
<div>Submitted data:</div>
<div id="formdata">
</div>
</div>
我们也可以使用它
禁用除选定选项之外的所有内容
<select>
<option disabled="disabled">1</option>
<option selected="selected">2</option>
<option disabled="disabled">3</option>
</select>
这样下拉菜单仍然有效(并提交其值),但用户无法选择其他值。
演示
您可以在提交时重新启用选择对象。
编辑 :即,通常禁用选择标记(具有禁用的属性),然后在提交表单之前自动重新启用它:
jQuery示例:
禁用它:
$('#yourSelect').prop('disabled', true);
在提交之前重新启用它,以便包含GET / POST数据:
$('#yourForm').on('submit', function() {
$('#yourSelect').prop('disabled', false);
});
另外,您可以重新启用每个禁用的输入或选择:
$('#yourForm').on('submit', function() {
$('input, select').prop('disabled', false);
});
链接地址: http://www.djcxy.com/p/4487.html
上一篇: HTML form readonly SELECT tag/input
下一篇: How I do to force the browser to not store the html form field data?