Подтвердить что ты не робот

Могу ли я запустить пользовательский script после того, как проверка на стороне клиента ASP.NET завершилась неудачей?

Я пытаюсь запустить некоторую клиентскую сторону script, если и только если проверка страницы на стороне клиента терпит неудачу и не может определить, где я могу ее подключить.

Если я привяжу свою функцию JavaScript к OnClientClick кнопки, которая отправляет форму, она выполняется до проверки на стороне клиента. Если я привяжу его к OnSubmit формы, это только срабатывает, если проверка прошла.

Любые идеи о том, как и где я могу подключить что-то подобное? Или, если у вас есть другие предложения, я открыт для них.

<form id="frm" runat="server" 
     onsubmit="FUNCTION HERE WONT FIRE IF VALIDATION FAILS">
<asp:requiredfieldvalidator id="vld" runat="server" controltovalidate="txt"/>
<asp:textbox id="txt" runat="server"></asp:textbox>

<asp:button id="cmd" runat="server" OnClick="dosomething"
     OnClientClick="FUNCTION FIRES BEFORE VALIDATION OCCURS">

</form>
4b9b3361

Ответ 1

Попробуйте использовать Page_ClientValidate("") для запуска проверки с помощью JavaScript, а затем вы можете запустить какой-то пользовательский код:

validate = function(){
    var isValid = Page_ClientValidate(""); //parameter is the validation group - thanks @Jeff
    if (isValid){
        isValid = somethingToCheck();
    }
    return isValid;
}

<asp:Button ID="Button1" runat="server" CausesValidation="false" OnClientClick="return validate();" ... />

Ответ 2

Добавьте script ниже в конце разметки страницы:

var originalValidationFunction = Page_ClientValidate;
if (originalValidationFunction && typeof (originalValidationFunction) == "function") {
    Page_ClientValidate = function (validationGroup) {
        originalValidationFunction(validationGroup);

        if (!Page_IsValid) {
            // your code here
            alert("oops!");
        }
    };
}

Ответ 3

Итак, у вас есть два варианта, как справиться с этим:

  • Используйте CustomValidator validator, который предоставляет ClientValidationFunction и внутри вашей пользовательской функции проверки, очевидно, вы знаете, не удалось ли проверка. Это дает вам столько, сколько вам нужно, гибкость при проверке на стороне клиента, принимая функцию JavaScript, которая будет использоваться во время проверки.

  • Проверьте валидатор satus, обратившись к нему через JavaScript, обратившись к свойству validator isValid из JavaScript (+ jQuery):

 var anonymousValidator = $("#<%= vldCommentText.ClientID %>")[0];
 ValidatorEnable(anonymousValidator, true);
 if (!anonymousValidator.isvalid) 
 {
     // ...
 }