0

我尝试使用通用验证函数,但我认为长度验证有问题:该函数在第二个输入上工作,但在第一个输入上不起作用,你可以在 jsFiddle 上看到:

======> http://jsfiddle.net/RochesterFox/N2HyE/1/

的HTML:

    <input type="text" name="number" class="verify" conditions="requierd numeric"/>
    <input type="text" name="number2" class="verify" conditions="requierd lenght:5 numeric"/>

的JavaScript:

function getVal(field, array){
            arr = jQuery.grep(array, function (value) {
                search = field;
                if(value.match(search)) return true;
                return false;
            });
            var vals = arr[0].split(':');
            return vals[1];
        }
        $('.verify').blur(function(){
            var conditions = $(this).attr('conditions').split(' ');
            var state = [];
            if ($.inArray('requierd', conditions) > -1){
                if($(this).val() === '') state.push('invalid');
                else state.push('valid');
            }
            else $(this).removeClass('invalid').addClass('valid');
            if ($.inArray('numeric', conditions) > -1){
                if($.isNumeric($(this).val()) === false) state.push('invalid');
                else state.push('valid');
            }
            if(getVal('lenght', conditions) != ''){
                if($(this).val().length < getVal('lenght', conditions)) state.push('invalid');
                else state.push('valid');
            }
            if(($.inArray('invalid', state) > -1) === false){
                $(this).removeClass('invalid').addClass('valid');
                verif();
            }
            else{
                $(this).removeClass('valid').addClass('invalid');
            }
        });

        function verif(){
            var state = 'none';
            $('.verify').each(function(){
                if($(this).hasClass('invalid')) state = 'invalid';
            });
            if(state != 'invalid'){
                //VALID !
                $('body').append('VALIDATED');
            }
        }
4

1 回答 1

0

除了我上面的评论之外,我还用一个非常快速的修复方法将你分叉为 jsfiddle。

http://jsfiddle.net/mNUfG/

如果你真的不想使用一些现有的客户端验证库,你应该进一步清理你的代码,如果你不想更频繁地遇到这样的问题。

此外,您可能希望在 jsfiddle 中使用“JsLint”按钮来查找代码中的错误。

于 2012-08-28T22:01:11.127 回答