可能禁用/使项目在选择列表中不可见?

是否可以在选择列表中禁用/不可见项目? 我想要完成的是,取决于一些复选框,如果它们被选中,这些字段应该出现在下拉列表中。但是,我确实有永久应该在下拉菜单中的限定字段,它应该都是按顺序排列的。可能禁用/使项目在选择列表中不可见?

复选框:

<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

回到顶部