JavaScript - 仅验证数字/字母

时间:2016-09-22 11:40:26

标签: javascript validation

我知道主题行有很多类似的主题,所以我会直截了当地澄清我的问题。有一个简单的形式我正在验证,其中空字段的测试运行完美,并在跟随各种其他论坛帖子后,尝试实现数字或字母输入的测试,但功能根本不起作用。

以下是我工作的NotEmpty函数的片段:

 function validateNotEmpty( input, id )
     {

        var errorDisplay =  document.getElementById( id );
        var notEmpty;
        if ( input == "" ) // check if input is empty
        {
           errorDisplay.innerHTML = "This is a requiered field";
           notEmpty = false; // update return value
        } // end if
        else
        {
           errorDisplay.innerHTML = ""; // clear the error area
           notEmpty = true; // update return value
        } // end else

        return notEmpty; // return whether the input is empty

     }// end function validateNotEmpty

以下是我的两个(不是数字/字母表测试人员):

function validateNotNumber(input, id) 
    {
            var errorDisplay =  document.getElementById( id );
            var notNumber;

            for (var i=0;i<input.value.length;i++){
            temp=input.value.substring(i,i+1);
                console.log(temp);
            if (digits.indexOf(temp)==-1){
                errorDisplay.innerHTML = "Sorry, this section can not have numbers";
                notNumber =  false;
               }
            else
             {
               errorDisplay.innerHTML = ""; // clear the error area
               notEmpty = true; // update return value
             } // end else
         }
         return notNumber;
    }



function validateNotLetter(input, id) 
            {
                var errorDisplay =  document.getElementById( id );
                var notLetter;

                for (var i=0;i<input.value.length;i++){
                temp=input.value.substring(i,i+1);
                    console.log(temp);
                if (alphabets.indexOf(temp)==-1){
                    errorDisplay.innerHTML = "Sorry, this section can not have letter";
                    notLetter =  false;
                   }
                else
                 {
                   errorDisplay.innerHTML = ""; // clear the error area
                   notLetter = true; // update return value
                 } // end else
             }
             return notLetter;
        }

除此之外,这就是我从我的表单调用javascript函数的方法:

<td width="135" valign="top">
                          <input size="15" type="text" name="Full_Name"  value="" onblur = "validateNotNumber( this.value, 'nameError' )"/>
                         <p> <span id = "nameError" class = "errorMessage"></span> </p>
</td>

感谢任何帮助/指针,对JavaScript来说还是一个新手,所以围绕验证我的头脑已经非常复杂了。

2 个答案:

答案 0 :(得分:1)

这是过于复杂的方式。你应该明确尝试一些正则表达式,例如

    var alphanumeric = "someStringHere";
    var myRegEx  = /[^a-z\d]/i;
    var isValid = !(myRegEx.test(alphanumeric));
    console.log(isValid);

或功能:

function isValid(str) {
  var myRegEx  = /[^a-z\d]/i;
  return !(myRegEx.test(str));
}

答案 1 :(得分:1)

Fiddle帮助您入手。

我更新它基本上做你想要的,但使用正则表达式来检测数字,字母等。

其中一个样本:

 function validateNotLetter(input, id) {
   var errorDisplay = document.getElementById(id);

   var value = input || '';

   var letterRegex  = /\D+/i;
    var hasALetter = letterRegex.test(value);
   if(hasALetter){
     errorDisplay.innerHTML = "Sorry, this section can not have letter";;
   }else{
    errorDisplay.innerHTML = "";
   }

   return notLetter;
 }

正则表达式是强大的。大量资源在线:

  1. https://regex101.com/ - 测试正则表达式的位置

  2. https://regexone.com/ - 学习的地方