jQuery神秘的问题

时间:2012-08-28 21:45:31

标签: jquery validation

我试过男性一般验证函数,但我认为我对lenght validatinon有一个问题:函数在第二个输入上工作但在第一个输入中没有,你可以在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');
            }
        }

1 个答案:

答案 0 :(得分:0)

除了我上面的评论之外,我还为你提供了一个非常快速的解决方案。

http://jsfiddle.net/mNUfG/

如果您真的不想使用某些现有的客户端验证库,那么如果您不想更频繁地运行此类问题,则应该进一步清理代码。

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