我在表单上有一个提交按钮,我为其分配了一个函数来检查必填字段和可见字段。遇到空字段时,它应该向字段添加类,以及显示和错误消息。我有这个 jquery 脚本:
$(".submitBtn").click(function(validateAll) {
if (validated = false) {
alert("!!!");
displayValidationErr();
} else {
$('#questionBody').submit();
}
});
function validateAll() {
var validated = true;
$('.form-control').filter('[required]:visible').each(function() {
if ($(this).val() === '') {
$(this).addClass("emptyRequired");
validated = false;
}
});
}
function displayValidationErr() {
$("#validationError").fadeTo(2000, 600).slideUp(600, function() {
$("#validationError").slideUp(600);
});
}
单击按钮后,我无法从“validateAll”函数进一步传递变量。函数本身运行良好,但与 if\else 一起运行时就不行了。 我对这些东西很陌生,所以请对我放轻松。 :)
谢谢!
最佳答案
在您的 validateAll
函数中,您定义了 validated
,它创建了一个仅限于该函数的函数范围。您可以创建一个全局变量或只提供一个返回值。
全局变量方法:
var validated = true; // in the same scope as your two functions
$( ".submitBtn" ).click(function(){
validated = true;
validateAll();
if (validated == false){ // make sure double "=" is set
alert("!!!");
displayValidationErr();
}
else {
$('#questionBody').submit();
}
});
function validateAll() {
// var validated = true;
$('.form-control').filter('[required]:visible').each(function() {
if ( $(this).val() === '' ) {
$(this).addClass("emptyRequired");
validated = false;
}
});
}
返回方式:
$( ".submitBtn" ).click(function(){
validated = validateAll();
if (validated == false){
alert("!!!");
displayValidationErr();
}
else {
$('#questionBody').submit();
}
});
function validateAll() {
var validated = true;
$('.form-control').filter('[required]:visible').each(function() {
if ( $(this).val() === '' ) {
$(this).addClass("emptyRequired");
validated = false;
}
});
return validated;
}
此外,还有一些更易于阅读的代码的小技巧:人们往往更喜欢正面优先的 if block ,所以不要像这样从双重否定 if 条件开始:
if (validated == false){
alert("!!!");
displayValidationErr();
}
else {
$('#questionBody').submit();
}
最好的做法是从预期/想要的行为开始:
if (validated) {
$('#questionBody').submit();
}
else {
alert("!!!");
displayValidationErr();
}
关于javascript - 将变量从函数传递到 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53261642/