OnClick не работает, когда я использую Onclick и OnClientClick
С помощью этого кода я пытаюсь закрыть окно (как я это делаю), но у меня также есть событие Onclick, которое игнорируется!
<script type="text/javascript">
function GetRadWindow() {
var oWindow = null;
if (window.radWindow) oWindow = window.radWindow;
else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;
return oWindow;
}
function CloseDialog() {
GetRadWindow().close();
}
Страница ASPX:
<asp:Button ID="Button1" runat="server" Text="Soumettre ce ticket"
onclick="Button1_Click" OnClientClick="CloseDialog();return false;"/>
Мое приложение никогда не входит в событие Button1_click. Может ли кто-нибудь помочь мне выяснить, почему? заранее спасибо
РЕДАКТИРОВАТЬ: HTML СОЗДАН ДЛЯ КНОПКИ
<input type="submit" id="Button1" onclick="CloseDialog();" value="Soumettre ce ticket" name="Button1"/>
5 ответов
Эта статья как бы объясняет проблему. Вам нужно вернуть true в JS, если вы хотите, чтобы событие сервера инициировалось. В противном случае вы должны вернуть false.
И, похоже, вам придется добавить UseSubmitBehavior = false на основании: OnclientClick и OnClick не работают одновременно?
Это особенно очевидно, когда вы видите, что ваш сгенерированный HTML имеет только CloseDialog(), а не вызов Button1_Click. Это изменение будет объединено до конца вашего клика.
<asp:Button ID="Button1" runat="server" Text="Soumettre ce ticket"
onclick="Button1_Click" OnClientClick="CloseDialog();"
UseSubmitBehavior="false"/>
Я столкнулся с этой проблемой и с помощью UseSubmitBehavior="false"
почти сделал свое дело. Обязательно иметь свой OnClientClick
вызов настроен правильно:
Мой код использовался OnClientClick="return ValidateSearch();"
что неверно. Это должно быть просто
<asp:Button ID="keywordSearch" runat="server" Text="Search" TabIndex="1"
OnClick="keywordSearch_Click" OnClientClick="if (!ValidateSearch()) { return false;};" />
Посмотрите источник здесь (и скажите им спасибо!)
Если он настроен неправильно, OnClick
функция не сработает.
Вы возвращаетесь false
в onclientclick
, поэтому событие возвращается до обратной передачи. В следствии, onclick
никогда не стреляет
В page_load вы передаете функцию сценария java с использованием метода Add.Atribute с возвращением true. Сначала он загрузит функцию JavaScript. тогда он загрузит событие нажатия кнопки
Я только что столкнулся с той же проблемой, и я думаю, что мы запутались между серверной стороной enable="false"
и на стороне клиента "отключить".
Свойство сервера для включения элемента управления с помощью control.Enabled = "false";
это не то же самое, что применение Attribute
, лайк control.Attribute.Add("disabled","disabled");
Если вы применяете Enabled = false;
со стороны сервера вы фактически полностью отключаете элемент управления, даже если он показан на экране! Перейти, попробуйте и щелкните правой кнопкой мыши на элементе управления и выберите Inspector
или же FireFly
чтобы увидеть это. Ничего не появляется Ничего не происходит, потому что контроль не "существует".
Тем не менее, если вы примените Attribute
Свойство элемента управления видимо серверу и клиенту, и вы можете его проверить.
Я установил среду по умолчанию на стороне ASP.net, сказав элемент управления (asp:Button
в моем случае), имеет Enabled="true"
(или ничего не говорить, так как это по умолчанию в любом случае).
На стороне сервера, после PageLoad()
, Я делаю свою кнопку видимой (в моем случае она также была по умолчанию visible="false"
) и добавьте соответствующие Attribute
ценности.
btnSEND.Visible = true;
btnSEND.Attributes.Add("disabled", "disabled");
Таким образом, кнопка не включена, но она не является полностью "невидимой" для клиента, и, используя JavaScript в другой области моей программы, я контролирую, когда включить ее или нет.
Этот метод также позволяет избежать необходимости использовать UseSubmitBehavior="false"
,