Я знаю, что это старый пост, но у меня была похожая ситуация, и я смог решить ее следующим образом. Просто подумал, что выложу это на тот случай, если кто-то еще найдет здесь дорогу Я использую плагин проверки jQuery 1.9.0:
$('#aspnetForm').validate({
errorLabelContainer: "#messageBox",
wrapper: "li"
});
$("input[id$='myButton']").click(function () {
SetRules();
if ($('#aspnetForm').valid()) {
// form passed validation
} else {
$('#aspnetForm').resetForm();
return false;
}
});
function SetRules(){
$("select[id$='myDropDown']").rules("remove");
$("select[id$='myDropDown']").rules("add", {required:true});
}
Мой валидатор настроен так, что ошибки отображаются вместе в одном назначенном div. Когда я нажимаю кнопку, проверка запускается и отображает все элементы в этом элементе div и отмечает поля, которые являются недопустимыми, включая select (все варианты выделены красным цветом), и когда я меняю выбор, мой autopostback запускается и цвета выбора вернитесь к своему старому значению (при условии, что выбор прошел проверку).
Я довольно новичок в этом плагине, поэтому не могу объяснить его слишком хорошо, но мой мыслительный процесс состоял в том, чтобы попытаться получить форму для проверки и отображения ошибок, а затем вернуть элементы управления в исходное состояние, оставаясь при этом держать сообщения об ошибках видимыми. Я ожидал потерять красное выделение ошибок, но каким-то образом оно сохранилось, в то же время возвращая постбэк выбора.
Кроме того, я не знаю, способствовало ли это установлению правил таким образом или нет; Мне пришлось установить их таким образом по разным причинам, самая большая из которых была вызвана необходимостью выбора автоматически генерируемых идентификаторов .NET.