Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我试图验证一个包含多个函数的表单,但它只调用最后一个函数,即使我将它们与逗号组合在一起_Javascript - Fatal编程技术网

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;
}