如何检查多个字符的输入.indexOf?

how to check input .indexOf for multiple characters?

我正在尝试检查用户是否至少输入了一个数字。如果是,则输出 = 'okey' else 'no number'。这仅适用于第一个数字,但是当我输入 2 时,函数会回答 'no number'。有任何想法吗?谢谢!

        var firstName = document.getElementById('firstName');
        var alert = document.getElementById('check');

        function nameSecurityCheck() {
            var firstNameValue = firstName.value;
            if (firstNameValue.indexOf('1' || '2') === -1) {
                alert.textContent = 'no number';
            } else {
                alert.textContent = 'okey';
            }
        }
        firstName.addEventListener('blur', nameSecurityCheck, false);

您的问题是您只检查“1”的 indexOf:

特别是这条语句:

'1' || '2' === '1'

始终计算为 '1'。这意味着您的 indexOf 总是检查 '1',从不检查 '2'.

您可能正在寻找这个:

function nameSecurityCheck() {
        var firstNameValue = firstName.value;
        if (firstNameValue.indexOf('1') === -1 &&
            firstNameValue.indexOf('2') === -1) {
            alert.textContent = 'no number';
        } else {
            alert.textContent = 'okey';
        }
    }

编辑:但是,由于看起来您实际上是在尝试检查字符串是否包含数字,因此您可以为此使用快速正则表达式匹配:

var matches = value.match(/\d+/g);
if (matches == null) {
    alert('no number');
}