2017-09-30 5 views
-2

私は自分のコードの大半を行っていますが、何らかの理由で何もせずにフォームを送信しているだけです。 SSNを入力しても入力しなくても、SSNを検証しようとしています。それを検証するだけでなく、無効であれば入力の単語と背景の色を変更したいと思う。私はクラス名とIDを正しく設定しています。私のCSSでは、input.invalid、label.invalidなどの色の変更を使用しています。ここで私はJSコードのために持っているものです。どんな助けも素晴らしいだろう、ありがとう!ここ正規表現を使用してSSNを検証する方法

window.onload = function() { 

document.forms[0].onsubmit = validForm; 

    } 

function validForm() { 

var allTags = document.forms[0].getElementsByTagName("*"); 

for(vari = 0; i < allTags.length; i++) { 

    validTag(allTags[i]); 

} 

return false; 

function validTag(thisTag) { 

    var outClass = ""; 

    var allClasses = thisTag.className.split(" "); 

    for(var j = 0; j < allClasses.length; j++) { 

     outClass += validBasedOnClass(allClasses[j]) + " "; 

    } 

    thisTag.className = outClass; 

    if(outClass.indexOf("invalid") > -1) { 

     invalidLabel(thisTag.parentNode); 

     thisTag.focus(); 

     if(thisTag.nodeName == "INPUT") { 

      thisTag.select(); 

     } 

    } 

    function validBasedOnClass(thisClass) { 

     var classBack = ""; 

     switch(thisClass) { 

      case "": 

      case "invalid": 
       break; 

      case "Social": 

       if(!validSocial(thisTag.value)) { 

        document.getElementById("socialNum").className = ("invalid"); 

        document.getElementById("ssn").className = ("invalid"); 

        classBack = "invalid "; 

      } 
       break; 

      default: 

       classBack += thisClass; 

     } 

     return classBack; 

    } 

    function validSocial(social) { 

     var re = /^\d{3}-?\d{2}-?\d{4}$/; 

     var socialArray = re.test(social); 

     if(socialArray) { 

      document.getElementById("socialNum").value = socialArray[1] + "-" + socialArray[2] + "-" + socialArray[3]; 

      return true; 

     } 

     return false; 

    } 

    function invalidLabel(parentTag) { 

     if(parentTag.nodeName == "LABEL") { 

      parentTag.className += "invalid"; 

      } 

    } 

} 

}

<!DOCTYPE html> 

<link rel="stylesheet" type="text/css" href="regex.css"/> 

<script type="text/javascript" src="regex.js"></script> 

<title>COP2831: Chapter 7 - Regular Expressions</title> 

を要求したとして、私のhtmlコードであります

<h1>Regular Expressions - Kevin Taylor</h1> 

<form> 

    <label for="socialNum" id="ssn">Enter Social Security Number: 

    <input type="text" name="Social" id="socialNum" class="Social" maxlength="9"/> 

    </label> 

    <p><input type="submit" value="Submit">&nbsp;&nbsp;<input type="reset"></p> 

</form> 

+0

[尋ねる]を見てみましょう。 "デバッグの助けを求める質問("なぜこのコードは動作しないのですか? ")には、目的の動作、特定の問題またはエラー、および問題そのものを再現するのに必要な最短コードが含まれていなければなりません。 [mcve] " – pvg

+0

を参照してください。私はそれがssnを検証する必要があります。ラベルや入力用のテキストの色を変更することができます。明らかに私のコードが機能していないので、これはデバッグヘルプではありません。私はコードのほとんどを作りましたか?はい。私はなぜそれが検証されていないかを理解する助けが必要です。これは問題です。デバッグしません。それがスペルや文法のエラーなら、私はここにいません。 – colbreez

+0

'debugging'は 'スペルや文法の誤り'ではありません。あなたの質問はまだ「なぜこの作品はありませんか」です。 'validate ssn'は '望ましい動作'の明確なステートメントではありません。リンクされたものを読んでそれに応じて質問を編集してください。 – pvg

答えて

0

あなたのサンプルは完全ではありません、あなたはそれを私はちょうどあなたのSSN検証の単純化された作業サンプルを与えるこの方法を行うなぜ私は本当に得ることはありませんので。

window.onload = function() { 
    document.forms[0].onsubmit = validForm; 
}; 
function validForm() { 
    var ssnTag = document.getElementById("socialNum"); 
    var re = /^\d{3}-?\d{2}-?\d{4}$/; 
    var valid = re.test(ssnTag.value); 
    if (valid) { 
     ssnTag.style.borderColor = "green"; 
    } else { 
     ssnTag.style.borderColor = "red"; 
    } 
    return false; 
} 

JSFiddle

+0

ありがとう!私の大学図書にそのやり方が示されているからです。この本のように思えば物事はより複雑になっています。これが機能していることをありがとう。とにかく入力を変更するには123456789のようなssnを入力すると、送信後に123-45-6789に変更されます。 – colbreez

+0

これは少し難しいことです。グループ$ 1、$ 2、$ 3、グルーから値を集める(/ d(3)) - ?(\ d {2}) - ?(\ d {4})$/'グループで正規表現を使用することができます。テキストボックスを更新します。 – wp78de

+0

ありがとう!私はそれが最終的に考え出された、ちょうど$ 1、$ 2、$ 3のグループを使ってそれをしました。ありがとうございました! – colbreez

関連する問題