2016-09-22 7 views
-1

トピックラインに似たスレッドがたくさんあることを知っています。空のフィールドのテストが完璧に実行され、さまざまなフォーラムの投稿をフォローした後、数値入力またはアルファベット入力のテストを実装しようとしましたが、関数は単に機能しません。ここでJavaScript - 数値/アルファベットだけの妥当性確認

は私の作業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 

そして、次は私の2(数値/アルファベットテスターを動作していない)されています。このの上に

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のことがかなり新しいので、検証の周りに頭を入れておくのはかなり複雑です。

+0

学ぶための場所。しばらく時間を取って記事を整理し、簡単なコード例を作成すると助けになります。 – Nix

+0

あなたのvalidateNotNumber関数で問題が発生しましたが、あなたはinput.value.lengthを使用してループしています。代わりにinput.lengthだけを使用してください。この行にも同じことがあります。temp = input.value.substring(i、i + 1);あなたは未定義の数字を使用しています。 –

答えて

1

Fiddle

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

または関数。私はなど、手紙、それは基本的にあなたがやりたいことではなく数字を検出するために、正規表現を使用するようにそれらの1の

サンプル更新

:正規表現の

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/をテストする場所 - 正規表現は、あなたのコードを単純化する

1

これは複雑すぎます。たとえば正規表現を試してみる必要があります。あなたが始めるのに役立つ

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