#c# #javascript #asp.net
#c# #javascript #asp.net
Вопрос:
У меня отключен asp.Button, который я включу позже с помощью JavaScript. Вот так
<asp:Button ID="btnSave" runat="server" Text="Save" Enabled="false" OnClientClick="; return ValidateFields();" OnClick="btnSave_Clicked" />
Однако метод «onclick» не отображается как html, когда элемент управления отключен. Моя работа заключается в добавлении следующего кода в PageLoad.
btnSave.Attributes["onclick"] = "return ValidateFields();";
Есть ли более удобное решение для этого?
Спасибо
Ответ №1:
Вы можете использовать атрибут html для отключенной
<asp:Button disabled="disabled" ID="btnSave" runat="server" Text="Save" Enabled="false" OnClientClick="; return ValidateFields();" OnClick="btnSave_Clicked" />
Я предполагаю, что затем вы включаете ее на стороне клиента? если это так, вы можете включить это с помощью :
document.getElementById('MainContent_btnSave').removeAttribute('disabled'); //or jquery alternative where MainContent_btnSave is the clientid of the control
Комментарии:
1. да, я включаю кнопку на стороне клиента, изменяя отключенное значение. Спасибо за предложение. Это работает.
Ответ №2:
Что ж, очевидно, почему фреймворк ведет себя так: если кнопка отключена, почему у нее должен быть onclick
обработчик событий? Пользователь не может щелкнуть по ней, если она отключена! Из-за этого фреймворк удаляет атрибут.
Итак, я не думаю, что у вас есть другие варианты, кроме добавления атрибута вручную.
Комментарии:
1. Действительно забавно…. этот подход, похоже, игнорирует, что что-то происходит и на стороне клиента. Ну что ж!
2. MS должна была предоставить нам лучшие варианты — например, Disabled =»» и Enabled = «»», потому что оба они совершенно разные.
3. Было бы неплохо, если бы Visual Studio хотя бы выдала предупреждение в этом случае. «Ваш OnClientClick будет проигнорирован, потому что вы установили Enabled =’false'».