2012-02-07 209 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>