-1

在堆栈溢出的帮助下,我得到了下面的文本框验证代码

  1. 它必须包含至少 3 个字符

  2. 它必须包含至少一个元音

  3. 它必须只包含字母

  4. 仅当满足以上 3 个条件时,才必须启用提交按钮

    var $input = $('#myinput');
    var $error = $('.error');
    var $submit = $('#submit');
    var Filters = {
        min: {
            re: /.{3,}/,
            error: 'Must be at least 3 characters.'
        },
        char: {
            re: /[a-z]/i,
            error: 'Must be only letters.'
        },
        vowel: {
            re: /[aeiou]/i,
            error: 'Must have at least one vowel.'
        }
    };
    
        function test(value, filters) {
            var isValid = false;
            for (var i in filters) {
                isValid = filters[i].re.test(value);
                $error.hide();
                $submit.show();
                if (!isValid) {
                    $error.show().text(filters[i].error);
                    $submit.hide();
                    break;
                }
            }
            return isValid;
        }
    
        $input.on('keyup blur', function() {
            test(this.value, Filters);
        });
    

但是,它仍然接受数字.. 考虑输入是 aa99。它的启用按钮。

4

2 回答 2

1

在我在你的最后一个问题中发布的演示aa99中没有验证尝试它http://jsbin.com/ezatap/6/edit

而不是/[a-z]/i使用/^[a-z]+$/i

于 2012-09-15T07:47:30.017 回答
1

正如您使用 JavaScript 标记您的问题一样

这是一个纯 JavaScript 解决方案,这可能会对您有所帮助。

<input type="text" id="inputBox" onkeyup="CheckMe(this);" />
<input type="button" id="btn" disabled="disabled" />

<script type="text/javascript" language="javascript">
    var vowels = ['a', 'e', 'i', 'o', 'u'];
    function CheckMe(sender) {
        if (sender.value.length < 3) {
            document.getElementById('btn').disabled = true;
            return;
        }
        for (i = 0; i < sender.value.length; i++) {
            if (!isNaN(sender.value[i]) || vowels.indexOf(sender.value[i]) < 0) {
                document.getElementById('btn').disabled = true;
                return;
            }
        }
        document.getElementById('btn').disabled = false;
    }
</script>
于 2012-09-15T07:47:37.807 回答