Javascript验证-如何检查表单中输入的数字是否在一定范围内

Javascript Validation - How do I check that the number entered into a form is between a certain range?

本文关键字:数字 输入 是否 范围内 表单 验证 何检查 检查 Javascript      更新时间:2023-09-26

我有一部分html代码:

<tr>
    <td id="examnumber">Examination number</td>
</tr>
<tr>
    <td><input type="text" name="examnumber"/></td>
</tr>

我需要输入的数字是4位数字,长度在0000-9999之间。我试图通过使用以下javascript代码来验证它:

function validateForm() {
         var result = true;
         var msg="";

         if (document.ExamEntry.examnumber.value=="") {
           msg+="You must enter your examination number. 'n";
           document.ExamEntry.examnumber.focus();
           document.getElementById('examnumber').style.color="red";
         } else if ((document.ExamEntry.examnumber.value.length < 0) ||       (document.ExamEntry.examnumber.value.length > 9999)) {
           msg+= "The examination number is not within the range 0000-9999.'n";
           result = false
         }
        if (document.ExamEntry.examnumber.value.length!=4) {
          msg+="Your examination number must be 4 digits long. 'n";
          document.ExamEntry.examnumber.focus();
          document.getElementById('examnumber').style.color="red";
          result = false;
        }

然而,当我通过输入-900或3.45来测试代码时,它不会出现错误消息,并表示信息输入正确。如果有人能帮我纠正这个错误,我将不胜感激。

这里的主要问题是字段名为examnumber,您正试图通过表单名称(可能是ExamEntry)来获得它。以这种方式获取对该字段的引用(document.Form_Name.Field_Name)已经过时,而且只有在Internet Explorer上才真正起作用。

更通用的方法是使用document.getElementById

你正在使用这个,在这行:

document.getElementById('examnumber').style.color="red";

但是examnumber是字段名,而不是Id。您还应该为字段添加一个Id:

<td><input type="text" name="examnumber" id="examnumberfield"/></td>

这将使您能够使用贯穿始终:

var examnumberlabel = document.getElementById("examnumber");
var examnumberfield = document.getElementById("examnumberfield");
if (examnumberfield.value=="") {
       msg+="You must enter your examination number. 'n";
       examnumberfield.focus();
       examnumberlabel .style.color="red";
//.. etc

(我建议对值进行简单的regex测试可以验证值的长度和数字状态,无需单独测试。)

/^'d{4}$/.test(document.ExamEntry.examnumber.value)

如果此Regexp正好包含4位数字(0-9),则它将返回true。