0

開始時刻と終了時刻を検証する必要があります。検証が部分的に機能するように見えますが、両方の値がない場合は検証する必要がないため、必須ではありません。

$.validator.addMethod("endTimeRange", function() {
        var n=new Date();
        var st = Date.parse( n.getMonth()+1+'/'+n.getDate()+'/'+n.getFullYear() + ' ' + $("#startTime").val());
        var nd = Date.parse( n.getMonth()+1+'/'+n.getDate()+'/'+n.getFullYear() + ' ' + $("#endTime").val());
        return  nd > st;
    }, "Please specify a correct end time, the end time must be before the second.");

    $.validator.addMethod("startTimeRange", function() {
        var n=new Date();
        var st = Date.parse( n.getMonth()+1+'/'+n.getDate()+'/'+n.getFullYear() + ' ' + $("#startTime").val());
        var nd = Date.parse( n.getMonth()+1+'/'+n.getDate()+'/'+n.getFullYear() + ' ' + $("#endTime").val());
        return  st < nd;
    }, "Please specify a correct start time, the start time must be after the end time.");


startTime: {
             required: function(element) {
             return $("#endTime").val().length > 0;

            },
            startTimeRange:true
        },

        endTime: {
             required: function(element) {
             return $("#startTime").val().length > 0;
            },
            endTimeRange:true

        },
4

1 に答える 1

0

まず、2 つの検証方法は同じことを行います。フィールドの 1 つまたは両方が空の場合に成功する検証を実装するには、それらを戻り値に追加するだけです。

// default is true
var isValid = true;

// if either value is empty, dont validate
if ($("#endTime").val() !== '' && $("#startTime").val() !== '') {
    // start time must be before end time
    isValid = startTime <= endTime;
}

return isValid;
于 2012-05-03T18:56:05.083 に答える