繁体   English   中英

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

[英]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"添加到标记中,还将类从buttonbutton我皮肤的类名)更改为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

通常, ""虚假的 (例如在"" == falsetrue )。

我建议您使用框架来设置这些属性,以捕获任何特定于浏览器的行为。 对于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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM