以下是生成下拉列表的代码(在视图中)
@Html.DropDownList("feeTypes", null, new { @disabled = false })
当我将false更改为true时,上面的行正常工作,但是当我设置为false时,它也被禁用(即每当我输入true或false时,下拉列表总是被禁用)
为什么会出现上述情况?
我真正想做的是制作一个可以按程序启用或禁用的下拉列表,有没有其他方法可以实现这一目标?
答案 0 :(得分:5)
如果存在,则禁用属性将禁用,无论值如何。你最终因为这个原因而在剃刀中有条件:
@if(disabled){
Html.DropDownList("feeTypes", null, new { @disabled = false })
}
else{
Html.DropDownList("feeTypes", null)
}
答案 1 :(得分:3)
修改强>
您可以将disabled设置为null(或者可能是空字符串),然后不会呈现该属性。
@Html.DropDownList("feeTypes", null, cond ? new { @disabled = "" } : null)
其中cond
为真或假
下面的讨论以一个错误的版本开始。它现在已经修复和测试了!
答案 2 :(得分:2)
你需要它:
@Html.DropDownList("feeTypes", null, new { @disabled = "disabled" })
如果您希望启用下拉菜单,则根本不需要disabled
属性,请执行以下操作:
@Html.DropDownList("feeTypes", null)
如果您希望能够在2之间切换,请考虑使用一些JavaScript / jQuery
答案 3 :(得分:2)
“disabled = false”有点多余。在生成的标记中,对于不的元素被禁用,那么您根本不需要disabled
属性。例如:
禁用元素:
@Html.DropDownList("feeTypes", null, new { @disabled = true })
未禁用的元素:
@Html.DropDownList("feeTypes")
没有HTML标记来指定“这未被禁用”。相反,在指定disabled
属性之前,默认情况下不会禁用元素。
答案 4 :(得分:1)
禁用属性它实际上不需要激活任何参数。只有提到禁用(没有任何参数),它才会禁用DOM元素
<input type="text" disabled />
由于未验证非参数属性,我们通常会将参数添加为xhtml有效
<input type="text" disabled="ItDoesntReallyMatter" />
你需要做的是使用jquery或简单的javascript从元素中完全删除属性。
document.getElementsByTagName("feeTypes")[0].removeAttribute("disabled ");
答案 5 :(得分:1)
如果要重新启用它,请删除disabled
属性。没有disabled="enabled"
之类的东西。即使像<input type="text" disabled />
这样的标记也会在现代浏览器中禁用您的输入。
有关详细信息,请参阅the html5 reference。
答案 6 :(得分:0)
将readonly放在您的下拉列表中后,将其置于样式标记内..
<style>
select[readonly] option, select[readonly] optgroup {
display: none;
}
<style>