Я работаю над формой простой проверки в моем проекте. Я проверяю все поля с validate = "true" и проверяет набор переключателей с одной дополнительной функцией.
Сначала вы видите функцию для текстовых полей с validate = "true", затем функцию wz_radio_shipping для переключателей, а затем я проверяю обе функции и возвращаю true для false для формы submit.
В функции wz_radio_shipping я использую a! в выражении if. Делая это, переключатели переключателей успешно проверяются, если они пусты, но моя форма больше не может подаваться. Если я удалю! проверка переключателя не работает, но моя форма теперь может быть отправлена.
Я попытался изменить! to == "", но это не работает.
Может кто-то помочь мне с этим?
$(wz_form).submit(function() {
function wz_validation() {
var value=false;
var txtboxes=$('input[validate="true"]');
for(var i=0;i<txtboxes.length;i++) {
if($(txtboxes[i]).val()=="") {
$(txtboxes[i]).addClass('red_border');
value=false;
}
else{
$(txtboxes[i]).removeClass('red_border');
value=true;
}
}
return value;
}
function wz_radio_shipping() {
if($("#shipping_form")) {
if(!$('input[name=wz_shipping]:checked', '#shipping_form').val()) {
$("#checkout_shipping").addClass('red_border');
return false;
}
else{
$("#checkout_shipping").removeClass('red_border');
return true;
}
}
}
if(wz_validation() & wz_radio_shipping()) {
return true;
}
else{
return false;
}
});
Ваша главная проблема здесь:
if(wz_validation() & wz_radio_shipping()) { // <-- notice single "&"
должен быть:
if(wz_validation() && wz_radio_shipping()) { // <-- now is double "&"
Попробуйте это оптимизированное решение:
$(function() {
function wz_validation() {
var ok = true;
$('input[validate="true"]').each(function() {
if($(this).val() == '') {
ok = false;
$(this).addClass('red_border');
}
else $(this).removeClass('red_border');
});
return ok;
}
function wz_radio_shipping() {
var form = $("#shipping_form");
if(form.length) {
if(form.find('input[name=wz_shipping]:checked').length == 0) {
$("#checkout_shipping").addClass('red_border');
return false;
}
else{
$("#checkout_shipping").removeClass('red_border');
return true;
}
}
}
$(wz_form).submit(function() {
return wz_validation() && wz_radio_shipping();
});
});
wz_validation
функцииwz_validation
.