2012-02-07 87 views
-2
  1. 如何驗證文本框應該只包含字母 使用JavaScript或使用正則表達式?
+0

,這個問題很簡單,但我得到了一些困難。 – Nitish 2012-02-07 09:46:49

+2

到目前爲止你有什麼? – Quentin 2012-02-07 09:53:07

+1

爲什麼這個標籤爲'java'? – Quentin 2012-02-07 09:57:15

回答

-1

創建一個函數:

function validateTextbox(element) { 

    var pattern = /^[A-Za-z]+$/; 

    if (!pattern.test(element.innerHTML) { 

     //Do something 
     element.innerHTML += " Not matched"; 

    } 

} 

將其綁定到元素:

<some-element onchange="validateTextbox(this)" /> 

或者使用綁定它(更易於維護和推薦)的方式:

var element = getElementById("someID"); 
element.addEventListener("change", function() { 

     var pattern = /^[A-Za-z]+$/; 

     if (!pattern.test(element.innerHTML) { 

      //Do something 
      element.innerHTML += " Not matched"; 

     } 
    } 
} 
+0

這是行不通的。您不應該使用innerHTML來測試文本框的值,並且您的正則表達式將絕對匹配所有內容(因爲它測試查看一個字符串是否包含零個或多個特定字符,而所有字符串都會)。應避免內部事件處理程序屬性。不依賴於分號插入被認爲是良好的編碼風格。 – Quentin 2012-02-07 09:54:35

+0

哦,'element.innerHtml'將永遠是'undefined',除非有明確的分配給它。 JavaScript區分大小寫。 – Quentin 2012-02-07 09:59:59

+0

感謝您指出我的錯別字(分號和innerHTML)。就正則表達式而言,我認爲他希望匹配空字符串A-Z和空格* 0或更多次*。 – 2012-02-07 10:08:37

1

您可以使用Regex in JavaScript來實現此目的...

var text = document.getElementById('TEXTBOX_ID').value;//get value from textbox 
var regex = /^[a-zA-Z]+$/;//only allow letters (minimum of 1). No whitespace, no symbols, no numbers 

if(regex.test(text)){ 
    //this is valid 
} 
+0

這是行不通的。您沒有將正則表達式綁定到字符串的開頭。在嘗試調用測試方法之前,您有一個隨機空間。你不解決問題的「文本框」部分。 – Quentin 2012-02-07 09:56:46

+0

@Quentin:前兩點輸入錯誤。第3個已被解決 – musefan 2012-02-07 10:00:19

+0

爲什麼捕獲組? – Quentin 2012-02-07 10:01:56

1

嘗試這樣的:

<script type="text/javascript"> 
var cek = /^[a-zA-Z\ \']+$/; 
function validate(form){ 
var name = form.name.value; 
if (!cek.test(name)) { 
    alert("Only Alphabetic"); 
    return false; 
} 
return true; 
} 
</script> 

<form method="" action="#" onSubmit="return validate(this);" name="form"> 
<input type="text" id="name" name="name" value="" /> 
<input type="submit"> 
</form>