Элегант в глазах смотрящего ...
Я бы порекомендовал создать собственный валидатор для обработки трех ваших случаев.
Я потратил некоторое время, чтобы понять, что может сделать Validate ... Я придумал это, чтобы проверить свою форму. Я использовал асинхронный вызов сервлета для проверки имени пользователя ... но вы можете поместить в него все, что захотите.
Я обнаружил еще одну публикацию о переполнении стека, которая лучше иллюстрирует создание пользовательских валидаторов ...
Мне особенно нравится эта строка jQuery.validator.methods['date'].call(this,value,element)
, так как кажется, что вы можете использовать встроенные валидаторы в вашем пользовательском коде. jQuery Validate Plugin - Как создать простое пользовательское правило?
Вот ресурсы, которые я использовал при изучении проверки:
http://www.ferdychristant.com/blog//articles/DOMM-7LZJN7 // статья, подробно описывающая, как действительно использовать validate.
http://www.ferdychristant.com/blog//pages/jQuery%20validation%20code
http://randomactsofcoding.blogspot.com/2008/10/starting-with-jquery-how-to-write.html
http://docs.jquery.com/Plugins/Validation/Methods/required#dependency-expression
Существует также удивительная глубина информации просто в http://docs.jquery.com/Plugins/Validation ... вам просто нужно просмотреть все это!
ниже вы также увидите, что можете поместить javascript прямо в раздел правил.
$(document).ready(function() {
$("#EmailUserEditFormId").validate({
debug: true, //this lets it hit firebug
onkeyup:false, //keep the traffic down for my async call
rules: {
username: {
required: (jQuery('input#username:disabled').length==1)?false:true, //example of JS in a rule
usernameCheck: (jQuery('input#username:disabled').length==1)?false:true //example of a JS rule with a custom validator
}
},
messages: {
username: {
required: "Please enter a unique username.",
usernameCheck: "Username is already in use. Choose another."
}
}
});
});
... и это был мой простой пользовательский валидатор.
jQuery.validator.addMethod('usernameCheck', function(username) {
var postURL = "CheckUsername";
$.ajax({
cache: false,
async: false,
type: 'POST',
data: 'username=' + username,
datatype: 'xml',
url: postURL,
success: function(xml) {
unique = (jQuery(xml).find('unique').text() == "true") ? true : false;
}
});
return unique;
}, '');