Вы не можете установить атрибут элемента управления на стороне сервера, используя <%= %>
.Если вы посмотрите на визуализированный источник, он выглядит так:
onkeyup="checkEmptyTxtBox(this,'<%= btnSave2.ClientID %>')"
Он буквально содержит <%= %>
.
. Вы можете установить атрибут при загрузке страницы следующим образом:
protected void Page_Load(object sender, EventArgs e)
{
txt_Comments_2.Attributes["onkeyup"] = "checkEmptyTxtBox(this,'" + btnSave2.ClientID + "')";
}
РЕДАКТИРОВАТЬ :
Как многие захотят указать;это не самый лучший способ регистрации событий в HTML.Скорее JavaScript должен связываться с событием keyup, добавляя прослушиватель событий.Например, с jQuery это становится:
$(document).ready(function() {
$('#<%: txt_Comments_2.ClientID %>').keyup(function() {
if ($(this).val().replace( /^\s+|\s+$/g , "") == "") {
$('#<%: btnSave2.ClientID %>').attr('disabled', 'disabled');
}
else {
$('#<%: btnSave2.ClientID %>').removeAttr('disabled');
}
});
});
А ваша разметка ASP.NET выглядит следующим образом:
<asp:TextBox
ID="txt_Comments_2"
runat="server"
Wrap="true"
TextMode="MultiLine" />
<asp:Button
ID="btnSave2"
runat="server"
text="Save"
Enabled="False"/>
Преимущество этого состоит в том, что вы не загромождаете ваш HTML при регистрации событий.Есть даже другие, возможно, более чистые способы сделать это с чем-то вроде KnockoutJS.