我認爲這將是整潔,嘗試做我自己的表單驗證。我可以在代碼上測試電話號碼。我使用的JavaScript只允許數字,並檢測數字的位數。如果數字是3或7,我想添加一個破折號。它設置爲7,因爲在我輸入第一個短劃線後,短劃線包含在字符串中,第二短劃線成爲字符串中的第8個位置。現在,這很好,但如果用戶輸入了一個錯誤的數字並且短劃線出現了,那麼當用戶嘗試退格時,它會看到字符串長度回到3或7,並自動將短劃線放回那裏,而不是允許用戶一次返回一個空間來糾正錯誤。如果他們按住退格鍵,它將被刪除。我試過使用拆分和子字符串,並無法弄清楚如何工作,因此它能正常工作。javascript表單驗證電話號碼
HTML
<form>
<input type = 'text' name = 'txtPhone' id = 'txtPhone' onkeypress = 'return numbersOnly(event)' onkeyup = 'validateForm(this.id)'/>
</form>
的JavaScript
function numbersOnly(e){
var unicode = (e.charCode) ? e.charCode : e.keyCode;
if (unicode == 8
|| unicode == 9
|| (unicode >= 48 && unicode <= 57)
)}
return true;
}else{
return false;
}
}
function validateForm(id){
var id = document.getElementById(id);
var unicode = (event.charCode) ? event.charCode : event.keyCode;
// first add slashes after third and sixth digit
if (id.value.length == 3
|| id.value.length == 7
){
var newValue = id.value += "-";
id.value = newValue;
}
// if backspace is pressed, remove the dash
if (unicode == 8){
var value = document.getElementById(id).value;
value = value.substring(0, value.length - 1);
}
}
你可以在你的表單中使用Jquery嗎? – Amit 2013-03-18 04:14:13
最簡單的方法是創建一個變量,記錄最後一個按下的按鈕是否是退格鍵,而不是再次添加短劃線,直到按下不同的按鍵。另一種方法是預先定義一個可見的模板,並跟蹤擊鍵並使用該模板通過存儲實際數字的中間字符串填充模板(使您可以更改模板,而不會擾亂邏輯,例如支持(555)555 -5555 – Offbeatmammal 2013-03-18 04:15:33
您可以使用[HTML5輸入約束驗證](https://developer.mozilla.org/en-US/docs/HTML/Forms_in_HTML#HTML_Syntax_for_Constraint_Validation) - 另外,我對您進行了一些更改http:// jsfiddle。 net/rlemon/A5JpN/1 /,最後在第二個函數中定義了'event'?我是否缺少內聯函數? – rlemon 2013-03-18 04:16:47