2013-04-08 42 views
4

我有一个问题,试图检查文本框是否仅包含使用JavaScript的a-z 0-9值。检查文本框是否包含无效字符

我有我的页面上的文本框:

<input type="text" id="first_name" class="first_name" value=""> 

我使用下面的JavaScript函数来检查我的文本框:

// Function to check letters and numbers 
function alphanumeric(inputtxt) 
{ 
//alert(inputtxt); 
var letters = "/^[0-9a-zA-Z]+$/"; 
if(inputtxt.value.match(letters)) 
{ 
alert('accepted'); 
} 
else 
{ 
alert('Please input alphanumeric characters only'); 
return false; 
} 
} 

而且我打电话给我的功能是这样的:

var test = alphanumeric(document.getElementById("first_name").value); 

然而没有任何事情发生。

如果我在我的字母数字函数中提醒'inputtxt',它会返回我在我的文本框中的值,所以我知道有一个值需要检查,但似乎并没有从那里继续。

有谁知道我哪里出了问题?

我想用JavaScript(jQuery的无)做到这一点。

回答

3

您正在使用.value两次:

document.getElementById("first_name").value 

if(inputtxt.value.match(letters))

删除其中之一。

12

的几个问题:

  • 坏形式为regular expression literal(不要使用他们的报价)
  • 使用match代替test(不是一个错误,但不是最有效的)
  • 您使用inputtxt.valueinputtxt尚未值
  • 你永远不返回true

您可以使用此:

function alphanumeric(inputtxt) { 
    var letters = /^[0-9a-zA-Z]+$/; 
    if (letters.test(inputtxt)) { 
    alert('accepted'); 
    return true; 
    } else { 
    alert('Please input alphanumeric characters only'); 
    return false; 
    } 
} 
0

您正在使用value两次:

alphanumeric(document.getElementById("first_name").value); 

if(inputtxt.value.match(letters)) 

这基本上展开到

if(document.getElementById("first_name").value.value.match(letters)) 

这是没有意义的,因为String对象value没有属性value,而undefined实体[...]value.value没有属性match()(调试控制台应该尽可能多地告诉你)。

enter code here变种测试=字母数字(的document.getElementById( “如first_name”));