0

嗨,我是 javascript 新手,我有以下功能:

function checkform() {
    var theForm = document.getElementById('login_form');
    var regName = /^[a-zA-Z ]+$/;
    var firstname = theForm.firstname.value;

    if (
        (firstname == "" || theForm.firstname.value.length > 30 ) &&
        (regName.test(firstName) == false)
    ) {
        alert("That is not a valid first name!");
        theForm.firstname.focus();
        return false;
    }
}

它的工作原理是检查数据是否为空且不大于 30。我的问题是当前允许用户输入与我的正则表达式不匹配的数据,即数字数据。我看不出逻辑有任何问题。

谢谢

4

3 回答 3

3

在您的条件语句中尝试这样做:

if ((firstname == "" || theForm.firstname.value.length > 30 ) || (regName.test(firstname) == false)) {
    // ...
}

我已将“&&”(和)运算符更改为“||” (或),因为您不需要检查两个条件(空或长于 30 且不匹配正则表达式),而只需检查其中任何一个条件(空或长于 30 或不匹配正则表达式)。

于 2013-03-17T14:42:37.383 回答
1

尝试一下

 var regName = /^[a-zA-Z ]{3,30}$/;
 if (!regName.test(firstName)){ //make an error
于 2013-03-17T14:42:27.650 回答
0
<input id="txtChar" onkeypress="return isNumberKey(event)" 
       type="text" name="txtChar">

   function isNumberKey(evt)
   {
      var charCode = (evt.which) ? evt.which : event.keyCode;
      if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57) || event.value > 30)
         return false;

      return true;
   }
于 2013-03-17T14:50:10.827 回答