在javascript中使用input.value.match进行验证

在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

我相信我有一个相当简单的问题,但不幸的是我无法解决它。我已经搜索了一段时间,并尝试了此代码的几种不同变体,但似乎无法使其正常工作

我所要做的就是检查我的输入值是否有字母字符,而不是数字

以下是我的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.');
    }">


任何帮助或建议都将不胜感激。

您正在将
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验证的功能。