私は自分のコードの大半を行っていますが、何らかの理由で何もせずにフォームを送信しているだけです。 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"> <input type="reset"></p>
</form>
[尋ねる]を見てみましょう。 "デバッグの助けを求める質問("なぜこのコードは動作しないのですか? ")には、目的の動作、特定の問題またはエラー、および問題そのものを再現するのに必要な最短コードが含まれていなければなりません。 [mcve] " – pvg
を参照してください。私はそれがssnを検証する必要があります。ラベルや入力用のテキストの色を変更することができます。明らかに私のコードが機能していないので、これはデバッグヘルプではありません。私はコードのほとんどを作りましたか?はい。私はなぜそれが検証されていないかを理解する助けが必要です。これは問題です。デバッグしません。それがスペルや文法のエラーなら、私はここにいません。 – colbreez
'debugging'は 'スペルや文法の誤り'ではありません。あなたの質問はまだ「なぜこの作品はありませんか」です。 'validate ssn'は '望ましい動作'の明確なステートメントではありません。リンクされたものを読んでそれに応じて質問を編集してください。 – pvg