可能禁用/使项目在选择列表中不可见?
是否可以在选择列表中禁用/不可见项目? 我想要完成的是,取决于一些复选框,如果它们被选中,这些字段应该出现在下拉列表中。但是,我确实有永久应该在下拉菜单中的限定字段,它应该都是按顺序排列的。可能禁用/使项目在选择列表中不可见?
复选框:
<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>
下拉包含了所有的checkboxfields +一些额外的字段,总是应该在那里。因此,我可以动态删除所有并添加取决于如果它被检查或不。 我需要在UI中执行此操作。莫名其妙地理想jquery。 那么对此有什么好处呢?有禁用选项吗?否则会是一种选择?
谢谢!
// MRW
编辑: 我试着这样做:
$('#drpSortColumn1 option[value=' + val + ']').hide();
,但似乎并没有工作了。我不知道是不是可以隐藏一个选项,或者如果我做错了。
回答:
最后我做这个:
$(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对象,其中包含所有原始字段,并在每个复选框单击时,从下拉列表中删除所有项目,并重新生成所有项目。然后根据未选中的复选框删除下拉列表中的值。
回答:
看看这里,我想这就是你要找的内容:jQuery disable SELECT options based on Radio selected (Need support for all browsers)
你可以有你自己的订单,只要在合适的条件,我认为它应该统治;)
干杯^^
编辑:好吧,这不是你的情况非常方便所以这里有一些线索:
尝试使用尽可能d禁用属性由CuSS规定,这将是最低成本和难以设置。但它有一个主要的缺点,即该选项不能被隐藏,即使它不再可选。显示:没有选项只适用于我记得的FF。
如果你准备编写大量的代码,你可以删除并通过影响他们的ID来记住他们为了他们像
... ... 等字段添加..
你必须有两次相同的选择,一个在显示:none div,“默认”选择包含所有选项,我们不会操纵。
然后如果你想隐藏一个选项,你可以在第一个选择中删除它。当你想把它放回去,并创建一个带两个参数的函数插入选项:一个用于标识select(select1,select2,select3 ....不知道你是怎么得到的),另一个用于行)你想插入(数组似乎是最好的)。
然后你在正确的选择中正确的位置克隆选择的,它应该做的伎俩,至少这是我看到的唯一的解决方案,如果你不想一直重新创建它,并保持正确订购。告诉我,如果这还不清楚,但我希望这有助于;)
回答:
变化:
$('#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);
以上是 可能禁用/使项目在选择列表中不可见? 的全部内容, 来源链接: utcz.com/qa/263330.html