下面是我的javascript代码。
我正在验证我在 if 条件中使用的表单数据。
如果它得到正确的验证,则隐藏所有警告,如果没有,则仅显示该字段的警告并返回 false。但是该函数不会返回 false。
法典:
function check_form()
{
var name=document.signin_form.full_name.value;
var userid=document.signin_form.userid.value;
var gender=document.signin_form.gender.value;
var dob=document.signin_form.dob.value;
var add=document.signin_form.address.value;
var pass=document.signin_form.pass.value;
var tc=document.signin_form.tc.checked;
if(name!==""&&name.length<30&&name.match(/^[A-Za-z]+$/))
{
right();
}
else
{
wrong("name");
return false;
}
}
function right()
{
$(document).ready(function(){
$("#name_warning").css("display","none");
$("#userid_warning").css("display","none");
$("#gender_warning").css("display","none");
$("#dob_warning").css("display","none");
$("#address_warning").css("display","none");
$("#password_warning").css("display","none");
$("#tc_warning").css("display","none");
});
}
function wrong(str)
{
str="'#"+str+"_warning'";
$(document).ready(function(){
$(str).css("display","inline-block");
});
window.scroll(0,250);
}
如果
验证正常,您的函数不会返回true
(您调用right()
.因此,如果你正在捕获函数的返回值,你会得到undefined
,它被视为与false
相同(见 https://developer.mozilla.org/en-US/docs/Glossary/Falsy(。
尝试在致电right()
后返回true
。
在此示例中,您可以看到,即使验证通过,s is not ok
仍会打印
var s = "abcdef";
var validate = function(name){
if(name!==""&&name.length<30&&name.match(/^[A-Za-z]+$/)){
console.log("right");
}else{
console.log("wrong");
return false;
}
};
if(validate(s)){
console.log("s was ok");
}else{
console.log("s was not ok");
}
但是如果你返回true
,事情按预期工作:
var s = "abcdef";
var validate = function(name){
if(name!==""&&name.length<30&&name.match(/^[A-Za-z]+$/)){
console.log("right");
return true;
}else{
console.log("wrong");
return false;
}
};
if(validate(s)){
console.log("s was ok");
}else{
console.log("s was not ok");
}