javascript - 多个字段的错误消息验证问题

标签 javascript validation message

我正在尝试使用简单的 JavaScript 代码对多个字段进行表单验证。

我面临的问题是,如果我删除 return 那么代码就可以正常工作。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>JavaScript form validation - checking all numbers</title>
    <style type="text/css">
    li {
        list-style-type: none;
        font-size: 16pt;
    }
    .mail {
        margin: auto;
        padding-top: 10px;
        padding-bottom: 10px;
        width: 400px;
        background : #D8F1F8;
        border: 1px soild silver;
    }
    .mail h2 {
        margin-left: 38px;
    }
    input {
        font-size: 20pt;
    }
    input:focus, textarea:focus{
        background-color: lightyellow;
    }
    input submit {
        font-size: 12pt;
    }
    .rq {
        color: #FF0000;
        font-size: 10pt;
    }
    </style>


</head>
 <body onload='document.form1.text1.focus()'>
    <div class="mail">
        <h2>Form Valiodation</h2>
        <form name="form1" action="#">
            <ul>
                <!-- enter number in following -->
                <li>
                    Enter Number:
                </li>
                <li><input type='text' name='text1'/></li>
                <li class="rq">
                    *Enter numbers only.
                    <p id="error"></p>
                </li>
                <li>&nbsp;</li>
                <!-- ***************** -->
                <!-- enter name in following -->
                <li>
                    Enter Name:
                </li>
                <li id="myList">
                    <input type='text' name='text2'/>
                    <p id="error2"></p>
                </li>
                <li class="rq">
                    *Enter alphabets only.
                </li>
                <!-- ***************** -->
                <li>&nbsp;</li>
                <input type="submit" name="submit" value="Submit" onclick="allVal(event)" />
                <li>&nbsp;</li>

            </ul>
        </form>
    </div>
     <script type="text/javascript">
     function allVal(event) {

        event.preventDefault();
        var numbers = /^[0-9]+$/;
        var letters = /^[A-Za-z]+$/;


        /* matching the number as follows */
        var matchNum = document.form1.text1.value;
        if(matchNum.match(numbers)) {
            document.getElementById("error").innerHTML="success";
            return true;
        } else if(matchNum.match(letters)) {
            document.getElementById("error").innerHTML="only numbers allowed";
            return false;
        } else {
            document.getElementById("error").innerHTML="please enter valid numbers";
            return false;
        }

        /* matching the name as follows */
        var matchName = document.form1.text2.value;
        if(matchName.match(letters)) {
            document.getElementById("error2").innerHTML="success";
            return true;
        } else {
            document.getElementById("error2").innerHTML="error";
            return false;
        }


    }

     </script>
</body>
</html>

最佳答案

  • 当您从函数返回时,代码块将终止 进一步执行。

  • 设置var isValid = true;并更改每个 if..else 中的值 基于条件和return isValid;的 block 最后。

演示 -

function allVal(event) {
  var isValid = true;
  event.preventDefault();
  var numbers = /^[0-9]+$/;
  var letters = /^[A-Za-z]+$/;


  /* matching the number as follows */
  var matchNum = document.form1.text1.value;
  if (matchNum.match(numbers)) {
    document.getElementById("error").innerHTML = "success";
    isValid = true;
  } else if (matchNum.match(letters)) {
    document.getElementById("error").innerHTML = "only numbers allowed";
    isValid = false;
  } else {
    document.getElementById("error").innerHTML = "please enter valid numbers";
    isValid = false;
  }

  /* matching the name as follows */
  var matchName = document.form1.text2.value;
  if (matchName.match(letters)) {
    document.getElementById("error2").innerHTML = "success";
    isValid = true;
  } else {
    document.getElementById("error2").innerHTML = "error";
    isValid = false;
  }

  return isValid;

}
li {
  list-style-type: none;
  font-size: 16pt;
}

.mail {
  margin: auto;
  padding-top: 10px;
  padding-bottom: 10px;
  width: 400px;
  background: #D8F1F8;
  border: 1px soild silver;
}

.mail h2 {
  margin-left: 38px;
}

input {
  font-size: 20pt;
}

input:focus,
textarea:focus {
  background-color: lightyellow;
}

input submit {
  font-size: 12pt;
}

.rq {
  color: #FF0000;
  font-size: 10pt;
}
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <title>JavaScript form validation - checking all numbers</title>
</head>

<body onload='document.form1.text1.focus()'>
  <div class="mail">
    <h2>Form Valiodation</h2>
    <form name="form1" action="#">
      <ul>
        <!-- enter number in following -->
        <li>
          Enter Number:
        </li>
        <li><input type='text' name='text1' /></li>
        <li class="rq">
          *Enter numbers only.
          <p id="error"></p>
        </li>
        <li>&nbsp;</li>
        <!-- ***************** -->
        <!-- enter name in following -->
        <li>
          Enter Name:
        </li>
        <li id="myList">
          <input type='text' name='text2' />
          <p id="error2"></p>
        </li>
        <li class="rq">
          *Enter alphabets only.
        </li>
        <!-- ***************** -->
        <li>&nbsp;</li>
        <input type="submit" name="submit" value="Submit" onclick="allVal(event)" />
        <li>&nbsp;</li>

      </ul>
    </form>
  </div>
</body>

</html>

关于javascript - 多个字段的错误消息验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45185983/

相关文章:

javascript - 以编程方式将 w3c css/html 验证器与自定义 html 结合使用

.Net 数据库消息代理

ios - messageUI.framework 对发图片有用吗?

javascript - 使用 Angular 和 Node 进行服务器端渲染

javascript - 使用 RxJS 如何缓冲函数调用,直到另一个异步函数调用已解决

javascript - 当尝试在 JS 中单击时更改 V 形方向时,只有 1 个 V 形发生变化。

Javascript 食谱计算器,卡在 isNan() 函数上?

使用历史对象的 Javascript 概念

php - URL 查询参数可以有多长?

ios - 在 TableView 单元格中显示多行 - IOS