ASP.NET OnClientClick= "return false;" не работает

Я просто хочу добавить некоторую проверку на стороне клиента (jQuery Javascript) в веб-пользовательском элементе управления. Я помещаю обработчик OnClientClick, и функция вызывается. Но, даже если я возвращаю "false", метод OnClick всегда увольняется. Что я делаю не так ?

Я с VS 2010, ориентируясь на 4.0 framework с JQuery 1.4.2. и jQuery UI 1.8.4.

вот пример кода :

<td style="text-align:right"><asp:Button ID="btnAddSave" OnClientClick="return ValidateMail();" OnClick="btnAddSave_Click" runat="server" Text="Submit" /></td>

метод сценария :

function ValidateMail() {
alert("Bouton clicked");
return false;

}

Если я поставлю точка останова в событии Page_Load, я вижу, что я вхожу, и событие btnAddSave_Click также выполняется.

6 ответов


у вас есть обработчик событий click (зарегистрированный через jquery), который возвращает true? В этом случае, возвращаемое значение OnClientClick игнорируется.

посмотрите на мой вопрос (и ответ): почему возврат false из OnClientClick не отменяет обратную передачу


по какой-то причине, хотя у меня не было никаких обработчиков событий jquery, это не сработало.

что на самом деле сработало:

OnClientClick="if (validate_form() == false) return(false);"

попробуйте изменить его

OnClientClick="ValidateMail(); return false;" 

большие ответы. Я делаю это так. Тот же результат - событие OnClick не запускается, если false возвращается из функции Java.

OnClientClick = "if (!ValidateDelete()) return false;"
OnClick="btnDeleteSupplier_Click"

Я пишу этот ответ только потому, что я использую кнопки html с ASP.NET WebForms и я не могли найти решение, почему я должен заменить свой кусок кода рабочими примерами. Вот решение, почему оно не работает. Надеюсь,это поможет вам понять проблему, как проверка помогла мне. Это мой первый пост, так что извините за стиль.

<button type="button" id="buttonAddOrEdit" class="btn btn-success"  runat="server" onclick="return myValidate()"    onserverclick="buttonAddOrEdit_ServerClick">Zapisz</button>

и функция javascript:

function myValidation() {
        if (validator.form()) {
           //Project logic
            return true;
        }
        else return false;
    };

используя щелчок на стороне клиента после правильной проверки не вызывал событие на сторона сервера, которая была привязана к кнопке. Решение, упомянутое для изменения части кода на:

onclick= " if (!myValidation()) возвращение;"

работает из-за того, что создается html, отображаемый на странице с onserverclick. Кнопка Onserverclick on html заменяется методом _ _ doPostBack из javascript. Fullcode кнопки html, отображаемой на стороне клиента, выглядит так:

<button onclick="return myValidation(); __doPostBack('ctl00$PortalContent$buttonAddOrEdit','')" id="ctl00_PortalContent_buttonAddOrEdit" type="button" class="btn btn-success">Zapisz</button>  Błąd składni

и после замены его на if statment.

<button onclick="if(!myValidation()) return; __doPostBack('ctl00$PortalContent$buttonAddOrEdit','')" id="ctl00_PortalContent_buttonAddOrEdit" type="button" class="btn btn-success">Zapisz</button>

работа с return myValidate (); не будет событием tirgger, потому что оно возвращается до __doPostBack.

следующий код позволит вам добавить еще один код к кнопке, если это необходимо, и не вызовет никаких проблем.


просто добавить javascript:

пример:

javascript:return ValidateMail();