Проверка Jquery и панель обновления вместе
Я пытаюсь использовать jquery validation, но моя форма находится в панели обновления. Поэтому даже после применения проверки на отправке формы она проверяет и показывает требуемое сообщение в течение едва 2 секунд, а затем отправляет форму.
Каков обходной путь для этого?
Я тоже пробовал это.
<asp:UpdatePanel ID="AddUserPanel" runat="server"
ChildrenAsTriggers="false"
UpdateMode="Conditional">
Но это тоже не помогает.
Ответы
Ответ 1
Если вы используете менеджер script, вам нужен код l33t ниже:
$(function () {
//Code that runs before update panel is fired.
//Listen for update panel
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
//Re-initialize jquery after an auto post back.
function EndRequestHandler(sender, args) {
//Do work after update panel fires.
}
});
Итак, в основном у вас есть повторяющийся код, код вне EndRequestHandler() и внутри него.
Ответ 2
Вам нужно вернуть false и остановить событие пузырьков в onsubmit, что-то вроде этого:
$("form").submit(function (e) {
e.preventDefault();
return(false);
});
Однако я ничего не знаю об ASP, поэтому я не знаю, поможет ли это в этом конкретном случае.
Возможно, вам нужно использовать .live
или повторно подключить обработчик после загрузки содержимого на этой панели, поэтому события onsubmit привязаны к нему?
Ответ 3
Asp.net WebForms использует функцию __doPostback()
, которая отправляет вашу форму.
Это то, что я сделал бы:
-
Проверить выполнение отправки, чтобы увидеть, работают ли вещи так, как ожидается, поэтому проверка выполняется сначала (что я уверен, что это происходит, потому что вы получаете эти сообщения) и проверяете код каждой отдельной части.
-
Если проверка не предотвращает выполнение события по умолчанию (bubbling) путем возврата false
вызова preventDefault()
или и того и другого, то его следует изменить, чтобы работать достаточно с Asp.net WebForms.
-
Если на фронте проверки все будет хорошо, вы должны изменить свою функцию __doPostback()
. Это звучит хакерски да, но иногда такие вещи нужно делать. Скопируйте существующий код и добавьте дополнительную проверку. Нечего волноваться.
Также проверьте этот fooobar.com/questions/128419/....
Черт возьми. Просто выполните поиск Google по этому вопросу и включите только результаты преобразования stackoverflow: веб-сайт проверки валидации jQuery: stackoverflow.com
Ответ 4
Если я правильно помню, вы можете использовать обычную кнопку вместо кнопки asp:, которая не вызовет обратной передачи. Если это так, вы можете использовать JavaScript для обновления UpdatePanel.