jQuery Validate动态添加方法

时间:2015-05-11 22:14:05

标签: javascript jquery forms jquery-validate

我有一个使用jQuery验证的表单,但是表单是动态生成的,我试图添加一个额外的方法来验证日期是否在另一个之前,如果之前已经使用了该日期。

HTML如下(动态生成名称):

<div class="form-group">
    <label class="control-label col-md-2">Read Date</label>
    <div class="input-group col-md-4 date date-picker" data-date-format="dd/mm/yyyy">
            <div class="input-icon right">
                    <i class="fa"></i>
                    <input type="text" class="form-control insert-val" readonly="" name="datepicker_16" aria-required="true" aria-invalid="false">
            </div>
            <span class="help-block">Enter the date of the reading</span>
            <span class="input-group-btn">
                    <button class="btn default" type="button" style="margin-top: -18px;"><i class="fa fa-calendar"></i></button>
            </span>
    </div>
    <input type="hidden" name="prevdate_16" class="form-control prev-date" value="29/05/2015">

使用以下jQuery验证日期字段:

$('#readingForm .insert-val').each(function(){

    var prevDate = $(this).parents('.form-group').find('.prev-date').val();

    var useLTD = true;

    if(prevDate !== ''){

        $.validator.addMethod("less_than_date", function(value, element) {

            var curDate = value;

            var curarr = curDate.split('/');
            var curDay = curarr[0];
            var curMonth = curarr[1];
            var curYear = curarr[2];

            var ncurDate = new Date();
            ncurDate.setFullYear(curYear, curMonth-1, curDay);

            var prevarr = prevDate.split('/');
            var prevDay = prevarr[0];
            var prevMonth = prevarr[1];
            var prevYear = prevarr[2];

            var nprevDate = new Date();
            nprevDate.setFullYear(prevYear, prevMonth-1, prevDay);
            return ncurDate <= nprevDate;

        }, "The reading date must be greater than the previous reading date.");

    } else {
        useLTD = false;
    }

    $(this).rules( "add", {
        required: true,
        minlength: 10,
        dateITA: true,
        less_than_date: useLTD
    });
});

在我添加“添加方法”之前,它正确验证了日期,但现在它没有,并且即使日期大于上一个日期也不接受。

真的难倒这个,任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:1)

好的,我一发布这篇文章,就意识到回归是错误的。

应该是:

return nprevDate <= ncurDate;