我有6个具有相似值和标签的select输入。要求是在任何一个选择中选择一个标签(值)后禁用它。我可以通过下面的代码实现这一点:
$('select').change(function()
{
var value = $(this).val();
$('option').removeAttr("disabled");
$('select').each(function ()
{
$("option[value=" + $(this).val() + "]").attr("disabled","disabled");
});
});
但是当我提交表单时,没有一个select值被提交。
关于如何解决这个问题的任何提示。我的提交操作使用简单的HTML提交按钮,如下所示:
<button class="btn btn-md btn-primary btn-md pull-right" type="submit">Submit</button>
我的发信人很大,所以发了一部分:
<form id="headersForm"role="form" action="/lteUpdteRequestHeaders" method="POST" enctype=multipart/form-data>
<select id="a" name="a"><option>......</option></select>
<select id="b" name="b"><option>......</option></select>
<select id="c" name="c"><option>......</option></select>
<select id="d" name="d"><option>......</option></select>
<select id="e" name="e"><option>......</option></select>
<select id="f" name="f"><option>......</option></select>
<button class="btn btn-md btn-primary btn-md pull-right" type="submit">Submit</button>
</form>
select选项是动态生成的,为了简单起见,删除了这部分代码。
这不是一些朋友所说的现有问题的重复。在该场景下,用户希望提交禁用选项值或禁用选择值。
我的问题是为什么我不能提交选择的已启用选项的值(我认为已启用)。
下面两个解决方案都工作得很完美,下面是另一个使用filter来实现这一点的方法,这和下面的另一个答案一样:
$('select').on('change', function() {
$('option').prop('disabled', false); //reset all the disabled options on every change event
$('select').each(function() { //loop through all the select elements
var val = this.value;
$('select').not(this).find('option').filter(function() { //filter option elements having value as selected option
return this.value === val;
}).prop('disabled', true); //disable those option elements
});
}).change();
谢谢