我相信我有一个相当简单的问题,但不幸的是我无法解决它。我已经搜索了一段时间,并尝试了这段代码的几个不同的变体,但似乎无法让它工作。
我所要做的就是检查我的输入值中是否有一个与数字相反的alpha字符。
这是我的js函数:
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.');
}">
看起来您正在尝试验证信用卡输入。我可以建议一个不同的方法吗?
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;
}
}
请参阅this jsFiddle以获取示例使用。
您将cc_number.value
传递为input
,但随后引用input.value.match()
,其结果为:
cc_number.value.value.match();
通过cc_number
:
if (checkLetters(cc_number)) {
...
}