Javascript 我试图验证一个包含多个函数的表单,但它只调用最后一个函数,即使我将它们与逗号组合在一起
我在验证表单时遇到问题。当它提交时,它只运行最后一个函数。当我尝试用逗号组合它们时,它只是连续运行它们。这是我的密码:Javascript 我试图验证一个包含多个函数的表单,但它只调用最后一个函数,即使我将它们与逗号组合在一起,javascript,Javascript,我在验证表单时遇到问题。当它提交时,它只运行最后一个函数。当我尝试用逗号组合它们时,它只是连续运行它们。这是我的密码: <script type= "text/javascript"> function validateForm() { var x = document.forms["myForm"]["name"].value; if (x == null || x == "") { alert("Name must be filled out"); ret
<script type= "text/javascript">
function validateForm() {
var x = document.forms["myForm"]["name"].value;
if (x == null || x == "") {
alert("Name must be filled out");
return false;
}
}
function validateForm() {
var x = document.forms["myForm"]["email"].value;
var atpos = x.indexOf("@");
var dotpos = x.lastIndexOf(".");
if (atpos< 1 || dotpos<atpos+2 || dotpos+2>=x.length) {
alert("Not a valid e-mail address");
return false;
}
}
function validateForm() {
var x = document.forms["myForm"]["message"].value;
if (x == null || x == "") {
alert("Please Send Us a Message");
return false;
}
}
</script>
您试图在一个变量中包含多个值,这是不可能的。您定义的值将覆盖已有的定义。更改函数名 像贝娄那样做
<script>
function fun1 () {
alert('in first')
}
function fun2 () {
alert('in Second')
}
function fun3 () {
alert('in third')
}
</script>
JavaScript不处理同名的重新声明函数 问题是:
function validateForm() {
// x is a bad name for the variable.
var x = document.forms["myForm"]["name"].value;
// x can never be null, BTW.
if (x === "") {
alert("Name must be filled out");
return false;
}
x = document.forms["myForm"]["email"].value;
var atpos = x.indexOf("@");
var dotpos = x.lastIndexOf(".");
if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) {
alert("Not a valid e-mail address");
return false;
}
x = document.forms["myForm"]["message"].value;
if (x === "") {
alert("Please Send Us a Message");
return false;
}
}
不要使用相同的名称命名函数!您可以将它们称为validateName、validateEmail和validateMessage
使用相同名称声明函数时,前面的函数将被最后一个函数覆盖
如果要在onsubmit中调用一个函数,可以设置onsubmit=validteForm并将validateForm声明为:
另一种解决办法;您可以将函数修改为简单的函数,如下所示
function validateForm(){
var x, atpos, dotpos;
x = document.forms["myForm"]["name"].value;
if(!x){
alert("Name must be filled out");
return false;
}
x = document.forms["myForm"]["email"].value;
atpos = x.indexOf("@");
dotpos = x.lastIndexOf(".");
if(atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length){
alert("Not a valid e-mail address");
return false;
}
x = document.forms["myForm"]["message"].value;
if(!x){
alert("Please Send Us a Message");
return false;
}
return true;
}
您有很多函数名validateForm重命名另外两个函数并在validateForm中调用它最后一个函数将覆盖它之前的所有函数。请使用不同的名称。@Stiger我不认为它会覆盖它会覆盖。@Mritunjay对不起,我的英语会覆盖。我已经更新了你问题的答案,如何在提交时调用。如何从onsubmit调用多个函数?@user3808508那么您应该调用调用多个函数的函数。这可能是返回validateName&&validateEmail&&validateMessage。如前所述,validateForm将始终返回未定义的表单,表单将始终提交。好的,效果很好,它们之间有括号。仍然是一个noob,但谢谢。
function validateForm() {
validateName();
validateEmail();
validateMessage();
}
function validateForm(){
var x, atpos, dotpos;
x = document.forms["myForm"]["name"].value;
if(!x){
alert("Name must be filled out");
return false;
}
x = document.forms["myForm"]["email"].value;
atpos = x.indexOf("@");
dotpos = x.lastIndexOf(".");
if(atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length){
alert("Not a valid e-mail address");
return false;
}
x = document.forms["myForm"]["message"].value;
if(!x){
alert("Please Send Us a Message");
return false;
}
return true;
}