【问题标题】:jQuery Validate add Method dynamicallyjQuery Validate add 方法动态
【发布时间】:2015-05-11 22:14:05
【问题描述】:

我有一个使用 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
    });
});

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

真的很难过这个,任何帮助将不胜感激。

【问题讨论】:

  • .addMethod() 方法只是创建一个您可以随时使用的新规则。换句话说,您只需将.addMethod() 放入您的DOM 就绪处理程序中并调用它一次,而不是在您的.each() 函数中多次调用它。当然,您的 .rules() 方法将保留在当前位置。

标签: javascript jquery forms jquery-validate


【解决方案1】:

好的,我一发布这个,就意识到返回是错误的方式。

应该是:

return nprevDate <= ncurDate;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    相关资源
    最近更新 更多