Предотвращение возможности отправки формы

Элементы управления, выполняющие проверку и входящие в состав пакета ASP.NET AJAX Futures, очень удобны, но они не включают в себя механизм отправки формы. Поэтому, даже если проверка терпит неудачу, пользователь все равно сможет отправить форму. Обычно это не представляет большой проблемы, так как все данные в форме должны пройти повторную проверку на сервере (поддержка JavaScript может быть отключена в броузере, поэтому вы никогда не должны полагаться на результаты проверки на стороне клиента). Однако с точки зрения удобства использования формы будет лучше, если отправить ее можно будет, только когда все поля заполнены корректными данными. Добавление такой возможности требует написания некоторого объема программного кода, но это не составит особого труда. Мы возьмем за основу пример 15.7 (проверка обязательного заполнения поля) и добавим в него возможность предотвращения отправки формы. Вся хитрость заключается в том, чтобы перехватить событие, которое запускает тег
. Благодаря системе обработки событий мы можем запускать программный код JavaScript в момент отправки формы (событие submit). Если этот код вернет значение false, отправка формы будет прервана. Ниже показано, как следует изменить тег :

Метод validateForm() должен возвращать значение false, если форма не готова к отправке, в противном случае он должен возвращать true.


Это легко реализуется с помощью вспомогательного метода get_isInvalid(), который определяется как метод элемента управления текстового поля (используется свойство control ассоциированного элемента HTML):
function validateForm() {
var textbox = $get("TextBox1").control;
return !(textbox.get_isInvalid());
}

Полный исходный текст приводится в примере 15.15.
Пример 15.15. Использование групповой проверки на принадлежность диапазону, связанной с меткой
CustomValidationGroup.aspx
<%@ Page Language="C#" %>
"http://www.w3.org/TR/xhtml1/DTD/xhtml1?transitional.dtd"> ASP.NET AJAX


(body)
(asp:ScriptManager ID="ScriptManager1" runat="server")

(asp:ScriptReference Name="PreviewScript.js"
Assembly="Microsoft.Web.Preview" /)

(/asp:ScriptManager)


*
(br /)




(/body)


Добавить в этот код большее число элементов формы не составит никакого труда – функция validateForm() в этом случае должна просто возвращать нечто вроде:
!(formelement1.get_isInvalid() || formelement2.get_isInvalid() || ...).



Оцените статью: (0 голосов)
0 5 0

Статьи из раздела ASP.NET AJAX на эту тему:
Вызов методов
Групповая проверка
Использование разметки для привязки данных: xm-script
Направление привязки
Обработка событий