-1

スタックオーバーフローの助けを借りて、条件のテキストボックス検証用に以下のコードを取得しました

  1. 少なくとも3文字が含まれている必要があります

  2. 少なくとも1つの母音が含まれている必要があります

  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 に答える