I have a custom validation rule for jQuery Validate. It should prevent the user from inserting a passenger number greater than a vehicle's available seats. The message I launch pop's out if the inserted value is wrong, but then the validation doesn't prevent me from submitting the form. What's the problem?
Here's the code:
$(function()
{
$.validator.addMethod("maxpass", function(value, element) {
var del = "${requestScope.delete}";
if (del == "true") {
return true;
}
var ret = "${requestScope.returnitinerary}";
if (ret == "true") {
return true;
}
sum = 0;
$("#vehicles :selected").each(function() {
$.ajax({
url : "${pageContext.request.contextPath}/vehicle/seatsno",
data : "id=" + $(this).val(),
async : false,
success : function(resp) {
sum += Number(resp);
}
});
})
return (sum >= Number($("#passengersNo").val())) ;
}, "Numero posti insufficiente!"),
$("#itinerary").validate(
{
//validation rules
rules :
{
departureDate : "required",
departureTime : "required",
arrivalDate : "required",
arrivalTime : "required",
arrivalCity : "required",
passengersNo :
{
maxpass : true,
required : true,
number : true
},
drivers :
{
required : true,
drive : true
},
vehicles : "required",
departureCity : "required",
serviceCost : "number",
transitPassCost : "number"
},
//error messages
messages :
{
vehicles : "Numero autisti non valido",
},
submitHandler : function(form)
{
form.submit();
}
});
});