7

我在尝试使用 JavaScript 检查文本框是否仅包含 az 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)来做到这一点。

4

3 回答 3

17

几个问题:

  • 正则表达式文字的错误形式(不要为它们使用引号)
  • 使用match代替测试(不是错误但不是最有效的)
  • 你使用inputtxt.valueinputtxt仍然是价值
  • 你永远不会返回真

你可以使用这个:

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;
  }
}
于 2013-04-08T08:01:50.790 回答
5

您正在使用.value两次:

document.getElementById("first_name").value

if(inputtxt.value.match(letters))

删除其中之一。

于 2013-04-08T08:00:19.900 回答
1

您正在使用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 herevar test = alphanumeric(document.getElementById("first_name"));

于 2013-04-08T08:02:54.483 回答