检查文本框是否包含无效字符

时间:2013-04-08 07:58:35

标签: javascript regex

我在尝试使用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 个答案:

答案 0 :(得分:14)

一些问题:

  • regular expression literal的错误表单(不要使用引号)
  • 使用match代替test(不是错误,但效率最高)
  • 您使用的是inputtxt.value,但inputtxt仍然是值
  • 你永远不会回归真实

你可以用这个:

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;
  }
}

答案 1 :(得分:3)

您正在使用.value两次:

document.getElementById("first_name").value

if(inputtxt.value.match(letters))

删除其中一个。

答案 2 :(得分: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 var test = alphanumeric(document.getElementById(“first_name”));