Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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_Validation - Fatal编程技术网

JavaScript-仅验证数字/字母

JavaScript-仅验证数字/字母,javascript,validation,Javascript,Validation,我知道在主题行中有很多类似的线索,所以我将直截了当地澄清我的问题。有一个我正在验证的简单表单,其中空字段的测试运行得很好,在关注了其他各种论坛帖子之后,我尝试实现数字或字母输入的测试,但这些函数根本不起作用 下面是我的工作NotEmpty函数的一个片段: function validateNotEmpty( input, id ) { var errorDisplay = document.getElementById( id ); var not

我知道在主题行中有很多类似的线索,所以我将直截了当地澄清我的问题。有一个我正在验证的简单表单,其中空字段的测试运行得很好,在关注了其他各种论坛帖子之后,我尝试实现数字或字母输入的测试,但这些函数根本不起作用

下面是我的工作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来说还是很新的,所以围绕验证的思考相当复杂。

这是一种过于复杂的方式。你一定要试试正则表达式

var alphanumeric=someStringHere; var myRegEx=/[^a-z\d]/i; var isValid=!myRegEx.testalphanumeric; console.logisValid 来帮助你开始

我对它进行了更新,基本上做了您想做的事情,但使用正则表达式来检测数字、字母等

其中一个样本:

 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;
 }
正则表达式是强大的。大量在线资源:

-测试正则表达式的位置

-学习的地方


正则表达式可以简化代码。如果你花点时间整理你的帖子,并创建一个简单的代码示例,我们会提供帮助。validateNotNumber函数中的问题是在循环时,你使用的是input.value.length,而只使用input.length。这一行也是temp=input.value.substringi,i+1;另外,您正在使用未定义的数字。