在javascript中使用input.value.match进行验证
我相信我有一个相当简单的问题,但不幸的是我无法解决它。我已经搜索了一段时间,并尝试了此代码的几种不同变体,但似乎无法使其正常工作 我所要做的就是检查我的输入值是否有字母字符,而不是数字 以下是我的js函数:在javascript中使用input.value.match进行验证,javascript,validation,Javascript,Validation,我相信我有一个相当简单的问题,但不幸的是我无法解决它。我已经搜索了一段时间,并尝试了此代码的几种不同变体,但似乎无法使其正常工作 我所要做的就是检查我的输入值是否有字母字符,而不是数字 以下是我的js函数: function checkLetters(input) { var numOnly = /^[0-9]+$/; var hasLetters = false; if (!input.value.match(numOnly)) { hasLetters
function checkLetters(input) {
var numOnly = /^[0-9]+$/;
var hasLetters = false;
if (!input.value.match(numOnly)) {
hasLetters = true;
}
return hasLetters;
}
下面是调用它的代码:
<input type="text" name="cc_number" size="13" maxlength="11" onblur="
if(checkLength(cc_number.value) == true) {
alert('Sorry, that is not a valid number - Credit Card numbers must be nine digits!');
} else if (checkLetters(cc_number.value) == true) {
alert('Credit Card number must be numbers only, please re-enter the CC number using numbers only.');
}">
任何帮助或建议都将不胜感激。您正在将
cc_number.value
传递为input
,但随后引用input.value.match()
,其结果是:
cc_number.value.value.match();
只需传递cc\u编号
:
if (checkLetters(cc_number)) {
...
}
看起来您正在尝试验证信用卡输入。我可以建议一种不同的方法吗
function checkCardInput(input,errorId) {
var errorNoticeArea = document.getElementById(errorId);
errorNoticeArea.innerHTML = '';
if(!input.value) {
errorNoticeArea.innerHTML = 'This field cannot be left blank.';
return;
}
if(!input.value.match(/[0-9]/)) {
errorNoticeArea.innerHTML = 'You may only enter numbers in this field.';
input.value = '';
return;
}
if(input.value.length != 9) {
errorNoticeArea.innerHTML = 'Credit card numbers must be exactly 9 digits long.';
return;
}
}
有关使用示例,请参见 哦,天哪,对不起,真是个麻烦,我忘了最重要的部分。我得到一个错误,上面写着未捕获的TypeError:无法读取未定义的属性“match”。我在检查元素并在checkLetters函数中单步执行if语句时看到了这一点。这很有效,非常感谢,我已经愚弄了这么久。我非常感谢您的帮助。您还可以使用pattern属性将regexp放入输入本身,以提供更易访问且无需js验证的功能。