ValidationSummary покажет список ошибок при обратной передаче. Поскольку каждое поле исправлено, его валидатор запускается, и любой проверочный текст исчезает. Я также хочу автоматически обновить ValidationSummary.
отлично работает следующее:
<asp:TextBox ID="ForenameTextBox" onblur="ValidationSummaryOnSubmit()" runat="server" />
но это не идеально, поскольку это означает изменение и поддержание этого на всех полях. (ValidationSummaryOnSubmit
- это функция Microsoft.) Поэтому я попытался сделать это динамически:
addEvent(window, "load", UpdateValidationSummary);
function addEvent(obj, evType, fn) {
if (obj.addEventListener) {
obj.addEventListener(evType, fn, true);
} else {
if (obj.attachEvent) {
var r = obj.attachEvent("on" + evType, fn);
return r;
}
}
}
function removeEvent(obj, evType, fn) {
if (obj.removeEventListener) {
obj.removeEventListener(evType, fn, true);
return true;
} else if (obj.detachEvent) {
var r = obj.detachEvent("on" + evType, fn);
return r;
}
}
function UpdateValidationSummary() {
if (typeof (Page_Validators) == "undefined") {
return;
}
var i, val, ctrl;
for (i = 0; i < Page_Validators.length; i++) {
val = Page_Validators[i];
if (val.controltovalidate != null && val.controltovalidate != "") {
ctrl = document.getElementById(val.controltovalidate);
if (ctrl != null && typeof (ValidationSummaryOnSubmit) == "function") {
//add call to ValidationSummary on blur
addEvent(ctrl, "blur", ValidationSummaryOnSubmit);
}
}
}
}
Это не работает, хотя - весь ValidationSummary исчезает, когда одно поле фиксировано, и функция ValidationSummaryOnSubmit, кажется, вызывается дважды. Если я использую простое присваивание вместо функции addEvent
, это работает, но я хочу обработать поля, которые могут уже иметь место в событии onBlur
.
В принципе, я думаю, что мне просто нужно добавить вызов функции ValidationSummaryOnSubmit
в «список» обработчиков onBlur
для каждого элемента управления. Почему приведенный выше код, кажется, не делает этого?