Как сделать проверку перед обратной передачей? - PullRequest
1 голос
/ 29 марта 2011

У меня есть пользовательский контроль с валидаторами ASP.Net.

writer.AddAttribute(HtmlTextWriterAttribute.Onclick, "javascript:return DoSmth();");

function DoSmth() {
var cBox = confirm("Are you sure?");
if (!cBox) {
    return false;
}
else {
//Invoke validation
}

Когда я нажимаю кнопку подтверждения, я вызываю окно подтверждения. Если я нажму "Отмена" - все в порядке. Но если я нажму ОК, мне нужно сделать проверку. Как я могу остановить обратную передачу и сделать валидацию?

Ответы [ 2 ]

5 голосов
/ 29 марта 2011

Позвоните на сторону клиента Page_ClientValidate(validationGroup).Он возвращает true, если страница была действительной.

function DoSmth() {
    var cBox = confirm("Are you sure?");
    if (!cBox) {
        return false;
    }
    else {
        return Page_ClientValidate(validationGroup);
    }
}

РЕДАКТИРОВАТЬ (ответ на комментарий):

validationGroup здесь строковая переменная,и нет необходимости передавать его в функцию DoSmth (честно, ответ должен быть: зависит ).

Если эта функция определена в файле .js, тода, validationGroup должен быть передан в качестве аргумента.

Если он является частью страницы / элемента управления, было бы проще использовать, например, здесь конструкции на стороне сервера:

return Page_ClientValidate('<%= btnSubmit.ValidationGroup %>');

гдеbtnSubmit - это кнопка, которая вызывает проверку или использует только строковую переменную.

0 голосов
/ 29 марта 2011

Я не уверен, что вы можете остановить обратную передачу с проверкой ASP.Net. Из MSDN:

"Проверка происходит после страницы инициализация (то есть после просмотра данные о состоянии и обратной передаче были обработано), но перед любым изменением или обработчики события click вызываются. «

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

function DoSmth() {

$('#form1').validate({
                rules: { field: "required" }
            });


var cBox = confirm("Are you shure?");
if (cBox && $('#form1').valid() ) {
    //form is valid 
}
else {
   return false;
}
...