[英]JavaScript disabled = true vs ASP.NET Enabled = False
在我的ASP.NET Web应用程序中,某些元素可能在代码隐藏中被禁用,而某些元素可能在JavaScript中被禁用。
对于代码隐藏元素,我仅使用以下VB.NET属性:
Me.element1.Enabled = False
对于动态元素,我使用以下JavaScript属性:
document.getElementById('" & Me.element2.ClientID & "').disabled = true;
我注意到的第一件事是,更改Enabled属性不只是将disabled="disabled"
添加到标记中,还将类从button
( button
我皮肤的类名)更改为button aspNetDisabled
。 为了弥补这一点,我添加了以下附加的JavaScript行:
document.getElementById('" & Me.element2.ClientID & "').className = 'button aspNetDisabled';
(很明显,这意味着如果/当我再次启用该元素时,我需要维护className属性,并且需要确保在适用时使用button
/ textbox
/ etc。-对于加分,如果您对此有任何建议, ,我很高兴听到他们的声音)
但是,我还注意到,通过JavaScript生成的标记仅是disabled=""
,而由ASP.NET Enabled属性更改生成的标记是disabled="disabled"
。
我尝试摆弄JavaScript将其更改为:
document.getElementById('" & Me.element2.ClientID & "').disabled = 'disabled';
但是,这似乎没有什么区别,该属性仍然为空。 有趣的是, disabled=true;
和disabled='disabled';
似乎以相同的方式工作-我希望其中之一更正确(目前我坚持=true;
)。
在启用和禁用元素方面,是否有建议的最佳方法通过JavaScript与服务器端ASP.NET达到相同的结果?
和...
disabled="disabled"
和disabled=""
呈现之间的区别是否可能引起我任何问题?
disabled
属性的值无关紧要,这意味着 http://www.w3.org/TR/html401/interact/forms.html#h-17.12.1
虽然有些奇怪。
var my_elem = document.getElementById('my_elem');
elem.disabled = true; // disabled
elem.disabled = false; // enabled
elem.disabled = "false"; // disabled
奇怪的情况是
elem.disabled = ""; // disabled
通常, ""
是虚假的 (例如在"" == false
是true
)。
我建议您使用框架来设置这些属性,以捕获任何特定于浏览器的行为。 对于disabled
来说,没有太多争执,但是诸如opacity
属性在所有浏览器中的作用并不相同。
disable属性不必具有固定值-以前可以在没有任何值的情况下工作(例如<input type=text disabled>
),但这会导致一些验证问题。 如果您已经在项目中使用jquery,则可以使用以下方法:
$('#elementname').removeAttr('disabled').removeClass('aspNetDisabled'); // Enable
和
$('#elementname').attr('disabled').addClass('aspNetDisabled'); // Disable
disabled="disabled"
和disabled="true"
之间的区别并不重要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.