禁用JavaScript=true vs启用ASP.NET=False

禁用JavaScript=true vs启用ASP.NET=False,javascript,asp.net,markup,Javascript,Asp.net,Markup,在我的ASP.NET web应用程序中,有些元素可能在代码隐藏中被禁用,有些元素可能在JavaScript中被禁用 对于代码隐藏元素,我只使用以下VB.NET属性: Me.element1.Enabled = False document.getElementById('" & Me.element2.ClientID & "').disabled = true; 对于动态元素,我使用以下JavaScript属性: Me.element1.Enabled = False d

在我的ASP.NET web应用程序中,有些元素可能在代码隐藏中被禁用,有些元素可能在JavaScript中被禁用

对于代码隐藏元素,我只使用以下VB.NET属性:

Me.element1.Enabled = False
document.getElementById('" & Me.element2.ClientID & "').disabled = true;
对于动态元素,我使用以下JavaScript属性:

Me.element1.Enabled = False
document.getElementById('" & Me.element2.ClientID & "').disabled = true;
我注意到的第一件事是,更改Enabled属性不仅仅是将
disabled=“disabled”
添加到标记中,它还将类从
button
(按钮的我的蒙皮类名)更改为
button aspNetDisabled
。为了弥补这一点,我增加了以下JavaScript行:

document.getElementById('" & Me.element2.ClientID & "').className = 'button aspNetDisabled';
(显然,这意味着如果/当我再次启用该元素时,我需要维护className属性,并且我需要确保使用
按钮
/
文本框
/等等。如果适用,对于加分,如果您对此有任何建议,我很高兴听到)

但是,我还注意到,通过JavaScript生成的标记仅为
禁用=“
,而通过启用ASP.NET的属性更改生成的标记为
禁用=“禁用”

我试图摆弄JavaScript将其更改为:

document.getElementById('" & Me.element2.ClientID & "').disabled = 'disabled';
然而,这似乎没有什么区别,属性仍然是空的。有趣的是
disabled=true
disabled='disabled'
似乎以同样的方式工作-我希望其中一个更正确(我现在坚持
=true;

在启用和禁用元素方面,是否有一种推荐的最佳方法可以使用JavaScript获得与服务器端ASP.NET相同的结果?

而且


呈现
disabled=“disabled”
disabled=“
之间的差异是否可能会给我带来任何问题?

disabled属性不必有固定的值-它过去工作时没有任何值(例如
),但这会导致一些验证问题。如果您已经在项目中使用jquery,则可以使用以下内容:

$('#elementname').removeAttr('disabled').removeClass('aspNetDisabled');  // Enable


disabled=“disabled”
disabled=“true”
之间的区别并不重要。

禁用属性不必有固定值-它过去在没有任何值的情况下工作(例如
),但这会导致一些验证问题。如果您已经在项目中使用jquery,则可以使用以下内容:

$('#elementname').removeAttr('disabled').removeClass('aspNetDisabled');  // Enable


disabled=“disabled”
disabled=“true”
之间的差异并不重要。
disabled
属性的值并不重要,而是隐含的

不过有一些奇怪的事情正在发生

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
这样的属性在所有浏览器中的工作方式并不相同。

disabled
属性的值并不重要,这是隐含的

不过有一些奇怪的事情正在发生

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
这样的属性在所有浏览器中的工作方式都不一样