-1

jquery を使用してカスタム検証を作成しましたが、いくつかのコードを大幅に繰り返していることがわかります。以下のコードを短くするのを手伝ってくれる人はいますか??

いくつかのパラメーターを渡し、他の関数でいくつかのコードを再利用する方法を探しています

どんな助けでも大歓迎です

var errorslist = [];

function datevalidation(){

            var day = $("#birthday-day").val();
            var month = $("#birthday-month").val();
            var year = $("#birthday-year").val();

            var validday = new RegExp ("(^0?([1-9]?|[1][0-9]|[2][0-9]|[3][0-1])$)");
            var validmonth = new RegExp ("(^0?([1-9]?|[1][0-2])$)");
            var validyear = new RegExp ("((?!1900)(19[0-9]{2}|200[0-9]|201[0-3]))");

            var date_error = $("#birthday-day").parent(".form-input").siblings(".form-info").children(".1stperror");

            if(!(day.match(validday) && month.match(validmonth) && year.match(validyear))){
                $(date_error).css("display","table-cell");
                    if($.inArray('date', errorslist)== -1){
                        errorslist.push('date');
                    }   
            }else{
                $(date_error).css("display","none");
                var index = $.inArray('date', errorslist);
                if(index > -1){             
                    errorslist.splice(index,1);  
                }
            }
        }

        function adressvalidation(){

            var checkadress = $("#adress").val();
            var adress_error = $("#adress").parent(".form-input").siblings(".form-info").children(".1stperror");

            if(checkadress==""){
                $(adress_error).css("display","table-cell");
                    if($.inArray('adress', errorslist)== -1){
                        errorslist.push('adress');
                    }   
            }else{
                $(adress_error).css("display","none");
                var index = $.inArray('adress', errorslist);
                if(index > -1){             
                    errorslist.splice(index,1);                 
                }
            }
        }

        function cityvalidation(){

            var checkcity = $("#city").val();
            var city_error = $("#city").parent(".form-input").siblings(".form-info").children(".1stperror");

            if(checkcity==""){
                $(city_error).css("display","table-cell");
                    if($.inArray('city', errorslist)== -1){
                        errorslist.push('city');
                    }   
            }else{
                $(city_error).css("display","none");
                var index = $.inArray('city', errorslist);
                if(index > -1){             
                    errorslist.splice(index,1);                 
                }
            }
        }
4

1 に答える 1

1

jQuery フォーム バリデーターのようなサードパーティ製ライブラリを使用してみませんか? そして、他にもたくさんあります...

jQuery フォームバリデーターの例:

<!-- adress has two 'd' by the way: address -->
<input id="address" type="text" data-validation="length" data-validation-length="min10">
<input id="city" type="text" data-validation="length" data-validation-length="min10">   

日付の検証は、1 つの入力を作成して解決できます。

<input id="birthday" type="date" data-validation="date" data-validation-format="dd/mm/yyyy">
于 2013-11-12T08:20:57.383 に答える