Я создаю форму, которая имеет следующие правила проверки: никакие поля не являются «обязательными», но если вы вводите электронное письмо, оно должно быть действительным, а если вы вводите пароль, оно должно содержать не менее 6 символов и соответствует значению поля подтверждения пароля.
Форма работает без нареканий, поэтому я знаю, что это не проблема PHP или HTML.
Вот код jQuery, обрабатывающий форму:
Обновленный код
$('#success').hide();
$('#pwerror').hide();
$('#emailError').hide();
$('#subSet').live('click',function() {
//if any of the fields have a value
if($("#chfn").val() != "" || $("#chln").val() != "" || $("#chpw").val() != "" || $("#chpw2").val() != "" || $("#chem").val() != "" || $("#chDefZone").val() != "Select Zone")
{
$ev = 1;
$pv = 1;
$("#profSet").validate({
rules: {
chem: {
email: true
},
chpw: {
minlength: 6
},
chpw2: {
minlength: 6,
equalTo: "#chpw"
}
},
messages:{
chpw2: {
equalTo: "Passwords must be the same."
},
chpw: {
minlength: "Password must be at least 6 characters."
}
}
});
//validates an email if there is one, trips the valid variable flag
if($("#chem").val() != "")
{
if(!($("#profSet").valid()))
{
$ev = 0;
}
}
//if either password field is filled, start trying to validate it
if($("#chpw").val() != "" || $("#chpw2").val() != "")
{
if(!($("#profSet").valid()))
{
$pv = 0;
}
}
//if those two were valid
if($pv == 1 && $ev == 1)
{
$.post('php/profSet.php', $('#profSet').serialize(), function(){
$('#profSet').hide();
$('#success').show();
});
}
//if either was invalid, the error was already tripped, and this code exits here
}
});
Теперь проблема в том, что один из флагов недействительности был отключен, но я не могу найти, где, форма должна вернуть действительный в моих тестах.