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



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

我所要做的就是检查我的输入值中是否有一个与数字相反的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)) {
  ...
}

最新更新