我是javascript的新手,所以我很抱歉,如果这完全是错的,但我现在正在尝试验证表单,并且我有简单的测试功能.我希望函数validateForm()返回所有三个函数checkName(),checkEmail和checkMessage().我有validateForm()函数的方式,它只运行checkName()函数.有任何想法吗?
function checkName(){
var name=document.forms["contactForm"]["Name"].value;
if(name==null || name==""){
$("input#name").css("border-color", "#ff0000");
$("input#name").attr("placeholder","Your name is required");
return false;
}
else {
$("input#name").css("border-color", "#00a8ff");
$("input#name").attr("placeholder","");
return true;
}
}
function checkEmail(){
var email=document.forms["contactForm"]["Email"].value;
if(email==null || email==""){
$("input#email").css("border-color", "#ff0000");
$("input#email").attr("placeholder","Your email is required");
return false;
}
else {
$("input#email").css("border-color", "#00a8ff");
$("input#email").attr("placeholder","");
return true;
}
}
function checkMessage(){
var message=document.forms["contactForm"]["Message"].value;
if(message==null || message==""){
$("textarea#message").css("border-color", "#ff0000");
$("textarea#message").attr("placeholder","Your message is required");
return false;
}
else {
$("textarea#message").css("border-color", "#00a8ff");
$("textarea#message").attr("placeholder","");
return true;
}
}
function validateForm(){
return checkName() && checkEmail() && checkMessage();
}
Run Code Online (Sandbox Code Playgroud)
小智 8
var yourdomain = {};
yourdomain.validateFormField = function(){
var domNameElement = document.getElementById("name");
var domMailElement = document.getElementById("mail");
var domMsgElement = document.getElementById("msg");
return {
validateName: function (){
/*your checkName() code goes here with a function return*/;
`enter code here`},
validateMail: function (){
/*your checkEmail() code goes here with a function return*/;
},
validateMsg: function (){
/*your checkMessage() code goes here with a function return*/;
},
};
}
Run Code Online (Sandbox Code Playgroud)
您可以按如下方式调用它。
yourdomain.validateFormField.validateName()
或者
yourdomain.validateFormField.validateMail()
或者
yourdomain.validateFormField.validateMsg()
取决于需要。
运算符&&执行左操作数(在您的情况下为checkName),如果为false,则立即返回false而不执行右操作数.因此,您需要手动执行每个功能,然后才能通过&&连接它们.
function validateForm(){
var a = checkName();
var b = checkEmail();
var c = checkMessage();
return a && b && c;
}
Run Code Online (Sandbox Code Playgroud)
由于短路评估,您当前的方式尝试按顺序评估它们。如果其中一项返回 false,则该过程结束。
短路表达式 x Sand y(使用 Sand 表示短路变体)等价于条件表达式 if x then y else false;表达式 x Sor y 等价于 if x then true else y。
您想要单独调用函数来执行每项检查:
function validateForm(){
var results = [];
result[0] = checkName();
result[1] = varcheckEmail();
result[2] = checkMessage();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13338 次 |
| 最近记录: |