我正在做一个简单的表单验证,我有 3 个函数来检查输入文本字段、一个选择字段和 2 个单选按钮。对于每个组,我都创建了一个函数,即 3 个函数。
我已经单独测试了这些功能,它们正在工作。但是,如果我在脚本末尾同时使用这 3 个,则只有其中一个有效。
谁能告诉我我需要做什么?
// Form validation
$(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;
}
// Check Bank select box on checkout page
function wz_val_select() {
if($(".payment select")) {
if($(".payment select option:selected").val() == "") {
$(".payment select").addClass('red_border');
return false;
}
else{
$(".payment select").removeClass('red_border');
return true;
}
}
}
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;
}
}
}
var wz_form = $('#wz_form1, #wz_form2, #wz_form3, #wz_form7');
$(wz_form).submit(function() {
return wz_validation() && wz_radio_shipping() && wz_val_select();
});
});
最佳答案
&&
是 short circuit运算符(operator)。当 a
为假时,它会阻止对 a && b
中的 b
求值。
如果您希望调用所有三个函数,即使其中一些函数返回 false
,并且仅返回 bool 值,请使用 &
。由于 &
生成 0
或 1
,您可能需要使用 !!
将结果转换为 bool 值:
return !!(wz_validation() & wz_radio_shipping() & wz_val_select());
您可能还想更明确地编写它:
$(wz_form).submit(function(e) {
var good = true;
good &= wz_validation();
good &= wz_radio_shipping();
good &= wz_val_select();
if (!good) e.preventDefault();
});
关于javascript - jQuery 返回多个函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20613179/