Я пытаюсь реализовать атрибут IsRequired
в нашем собственном элементе управления поиском (на самом деле это оболочка, содержащая Ajax AutoCompleteExtender
и один CustomValidator
). Как вы знаете, реализация правильной проверки для элемента управления поиском не просто включает проверку, если элемент управления не пустой, запись должна фактически существовать в списке прогнозирования поиска.
Я делаю это со следующим ClientValidationFunction
, подключенным к CustomValidator
:
function ValidateLookup(sender, args) {
var isValidEntry = $("#" + sender.controltovalidate)
.parent()
.children()
.filter("input:first")
.attr('ValidEntry') == args.Value;
if (isValidEntry)
args.IsValid = true;
else {
var acEntries = $("#" + sender.controltovalidate)
.parent()
.find("li[innerText=" + args.Value + "]");
args.IsValid = acEntries.length > 0;
if (args.IsValid)
$("#" + sender.controltovalidate)
.parent()
.children()
.filter("input:first")
.attr('ValidEntry', args.Value);
}
}
Я использую способ визуализации AutoCompleteExtender для проверки записи. Я знаю, что есть текстовое поле для вашей записи, скрытое, которое содержит последнее выбранное значение (не заполняется, пока проверка не пройдена), и один неупорядоченный список (ul ), который содержит предсказания поиска.
Прямо сейчас это работает, но я не знаю, есть ли у кого-нибудь представление о том, как сделать так, чтобы это выглядело как взлом. В настоящее время проблема заключается в том, что проверка текущей записи по списку прогнозов работает только тогда, когда элемент управления вызывает проверку (так как ul заполнен и доступен / находится под полем автозаполнения). Когда на странице вызывается проверка, ul отсутствует, поэтому я добавил, что «если текущая запись совпадает с последней действительной записью, больше ничего не проверяйте».
Любые идеи очень ценятся.