我有我的大部分代碼完成它,但由於某種原因,它只是提交我的形式沒有做任何事情。我試圖驗證一個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";
}
}
}
}
這裏是我的要求的HTML代碼
<!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>
<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
'調試'不是'拼寫或語法錯誤'。你的問題仍然是'爲什麼不這樣做'。 '驗證ssn'不是'期望的行爲'的明確陳述。請閱讀鏈接的內容並相應地編輯您的問題。 – pvg