是否可以在选择列表中禁用/不可见项目? 我想要完成的是,根据许多复选框,如果选中它们,则字段应显示在下拉列表中。但是,我确实有一个永远应该在下拉列表中的manditory字段,它应该都是在serten顺序。
复选框:
<table class="Fields"><tr>
<td><%=Html.CheckBox("Field1", Model.DisplayField1, new { value = "Field1" })%> Field 1</td>
<td><%=Html.CheckBox("Field2", Model.DisplayField2, new { value = "Field2" })%> Field 2</td>
<td><%=Html.CheckBox("Field3", Model.DisplayField3, new { value = "Field3" })%> Field 3</td>
</tr><tr>
<td><%=Html.CheckBox("Field4", Model.DisplayField4, new { value = "Field4" })%> Field 4</td>
<td><%=Html.CheckBox("Field5", Model.DisplayField5, new { value = "Field5" })%> Field 5</td>
<td><%=Html.CheckBox("Field6", Model.DisplayField6, new { value = "Field6" })%> Field 6</td>
</tr></table>
下拉:
<table cellpadding="0" cellspacing="0">
<tr>
<td>Sort 1</td>
<td><%= Html.DropDownList("drpSortColumn1", (SelectList)ViewData["SortColumns"])%></td>
</tr>
</table>
下拉列表包含所有复选框字段+一些额外字段,总是应该存在。因此,我可以动态删除所有并添加,具体取决于是否已选中。 我也需要在UI中执行此操作。理想上jquery不知何故。 那么approch对此有何益处?有禁用选项吗?什么会是一个选择?
谢谢!
// MRW
编辑: 我试着这样做:
$('#drpSortColumn1 option[value=' + val + ']').hide();
但这似乎没有成功。我不知道是否根本无法隐藏选项,或者我做错了。
答案 0 :(得分:1)
变化:
$('#drpSortColumn1 option[value=' + val + ']').hide();
$('#drpSortColumn1 option[value=' + val + ']').show();
为:
$('#drpSortColumn1 option[value=' + val + ']').attr('disabled','disabled');
$('#drpSortColumn1 option[value=' + val + ']').attr('disabled','');
或:
$('#drpSortColumn1 option[value=' + val + ']').attr('disabled',true);
$('#drpSortColumn1 option[value=' + val + ']').attr('disabled',false);
答案 1 :(得分:0)
看看这里,我认为这就是你要找的东西:jQuery disable SELECT options based on Radio selected (Need support for all browsers)
你可以拥有自己的订单,只是做出正确的条件,我认为它应该统治;)
干杯^^
编辑:好的,在你的情况下它不是很方便,所以这里有一些线索:
尝试使用下面的CuSS所描述的禁用属性,它将是最少的,并且难以设置。但它的主要缺点是该选项未被隐藏,即使它不再可选。显示:无选项仅适用于我记忆中的FF。
如果您已准备好编写大量代码,可以通过影响它们来删除和添加字段,以便记住它们的顺序,例如
... ... 等...
你必须有两次相同的选择,一个在显示中:none div,“default”选择包含所有选项,我们不会操作。
然后,如果要隐藏选项,可以在第一个选择中将其删除。当你想把它放回去,并创建一个带有两个参数的函数插入选项:一个用于识别select(select1,select2,select3 ....不知道你是怎么做的),另一个用于行(s )你想插入(数组似乎是最好的)。
然后你在正确选择的正确位置克隆选中,它应该做的伎俩,至少这是我看到的唯一解决方案,如果你不想一直重新创建它,并保持正确的顺序。告诉我,如果不清楚,但我希望这有帮助;)
答案 2 :(得分:0)
我最终这样做了:
$(document).ready(function() {
$('.Fields input[type=checkbox]:checked').click(function() {
$('#drpSortColumn1').children().remove();
jQuery.each(fields, function(val, name) {
$('#drpSortColumn1').append('<option value="' + val + '">' + name + '</option>')
});
$('.Fields input:checkbox:not(:checked)').each(function() {
$('#drpSortColumn1 option[value=' + $(this).val() + ']').remove();
});
})
});
所以我存储了一个包含所有原始字段的Json对象,并在每个复选框单击时,我从下拉列表中删除所有项目,并重新生成所有项目。然后我从下拉列表中删除值,具体取决于未选中的复选框。