【问题标题】:how to check input .indexOf for multiple characters?如何检查输入 .indexOf 的多个字符?
【发布时间】:2016-02-18 04:59:33
【问题描述】:

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

        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);

【问题讨论】:

    标签: javascript input indexof


    【解决方案1】:

    您的问题是您只检查 indexOf 是否为 '1':

    特别是这样的声明:

    '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');
    }
    

    【讨论】:

    • 你已经涵盖了我想说的所有细节:)
    • 谢谢!如果我想检查是否有大写字母怎么办?
    • 既然这是一个单独的问题,请先尝试在 SO 上搜索它,它应该在附近的某个地方
    猜你喜欢
    • 2017-12-31
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2017-08-01
    • 1970-01-01
    相关资源
    最近更新 更多