下面是生成下拉列表的代码(在视图中)
@Html.DropDownList("feeTypes", null, new { @disabled = false })
当我将 false 更改为 true 时,上面的行工作正常,但是当我设置为 false 时,它也被禁用(即,每当我输入 true 或 false 时,下拉列表总是被禁用)
为什么会出现上述情况?
我真正想做的是制作一个可以可编程启用或禁用的下拉列表,还有其他方法可以实现吗?
下面是生成下拉列表的代码(在视图中)
@Html.DropDownList("feeTypes", null, new { @disabled = false })
当我将 false 更改为 true 时,上面的行工作正常,但是当我设置为 false 时,它也被禁用(即,每当我输入 true 或 false 时,下拉列表总是被禁用)
为什么会出现上述情况?
我真正想做的是制作一个可以可编程启用或禁用的下拉列表,还有其他方法可以实现吗?
disabled 属性将禁用(如果存在),无论值如何。因为这个,你最终在剃刀中有一个条件:
@if(disabled){
Html.DropDownList("feeTypes", null, new { @disabled = false })
}
else{
Html.DropDownList("feeTypes", null)
}
编辑:
您可以将 disabled 设置为 null (或者可能是一个空字符串),然后该属性将不会被呈现。
@Html.DropDownList("feeTypes", null, cond ? new { @disabled = "" } : null)
哪里cond
是真或假
下面的讨论从一个错误的版本开始。现在已经修复和测试了!
你需要它是:
@Html.DropDownList("feeTypes", null, new { @disabled = "disabled" })
如果您希望启用下拉菜单,disabled
则根本不需要该属性,请输入:
@Html.DropDownList("feeTypes", null)
如果您希望能够在两者之间切换,请考虑使用一些 JavaScript/jQuery
“disabled = false”有点多余。在生成的标记中,如果一个元素不被禁用,那么您根本不想要disabled
它的属性。例如:
禁用的元素:
@Html.DropDownList("feeTypes", null, new { @disabled = true })
一个未禁用的元素:
@Html.DropDownList("feeTypes")
没有 HTML 标记来指定“这不是禁用的”。disabled
相反,在您指定属性之前,默认情况下不会禁用元素。
禁用属性它实际上不需要任何参数来激活。仅通过提及禁用(不带任何参数)它禁用 DOM 元素
<input type="text" disabled />
Since non parameter attributes are not validated we usually add a parameter to be xhtml valid
<input type="text" disabled="ItDoesntReallyMatter" />
The thing you have to do is remove the attribute completely from the element using jquery or simple javascript.
document.getElementsByTagName("feeTypes")[0].removeAttribute("disabled ");
Remove the disabled
attribute if you want to re-enable it. There is no such thing as disabled="enabled"
. Even markup like <input type="text" disabled />
will disable your input in modern browsers.
See the html5 reference for more info.
After putting readonly on your dropdownlist, put this inside style tag..
<style>
select[readonly] option, select[readonly] optgroup {
display: none;
}
<style>