Некоторое время назад я потратил на это несколько часов, и с тех пор я использую некоторую кастомную магию js для достижения этой цели.
На самом деле все довольно просто и работает как проверка ASP.NET. Основная идея - добавить класс css, чтобы прикрепить событие javascript к каждому элементу управления, для которого требуется быстрая визуальная обратная связь.
<script type="text/javascript" language="javascript">
/* Color ASP NET validation */
function validateColor(obj) {
var valid = obj.Validators;
var isValid = true;
for (i in valid)
if (!valid[i].isvalid)
isValid = false;
if (!isValid)
$(obj).addClass('novalid', 1000);
else
$(obj).removeClass('novalid', 1000);
}
$(document).ready(function() {
$(".validateColor").change(function() {validateColor(this);});
});
</script>
Например, это будет код, который нужно добавить в элемент управления текстового поля ASP.Net. Да, вы можете указать столько, сколько хотите, и это будет означать только добавление значения CssClass.
<asp:TextBox ID="txtBxEmail" runat="server" CssClass="validateColor" />
Он запускает проверку на стороне клиента ASP.Net при изменении рабочего контроля и применяет класс css, если он недействителен. Таким образом, для настройки визуализации вы можете положиться на CSS.
.novalid {
border: 2px solid #D00000;
}
Это не идеально, но почти :) и, по крайней мере, ваш код не будет страдать от лишних вещей . А также
лучший, работает со всеми видами валидаторов Asp.Net, пользовательские события.
Я не видел ничего подобного гуглу, поэтому я не хочу делиться с вами своим фокусом. Надеюсь, это поможет.
дополнительные данные на стороне сервера :
Через некоторое время, используя это, я также добавляю этот класс ".novalid" из css-кода, когда требуется определенная проверка на вещи, которые, возможно, могут быть проверены только на стороне сервера таким образом:
Page.Validate();
if (!requiredFecha.IsValid || !CustomValidateFecha.IsValid)
txtFecha.CssClass = "validateColor novalid";
else
txtFecha.CssClass = "validateColor";