2016-01-21 79 views
1

我有x个具有相同类名的文本框。我希望用户在其中输入日期,每个日期应该比前一个日期更大。我怎样才能做到这一点?jQuery验证 - 比较同一类的值

的jQuery -

jQuery.validator.addMethod("greaterrule", function(value, element, param) { 
    return $(param).not(element).get().every(function(item) { 
    return $(item).val() < value; 
}); 
}, "Please specify a greater value"); 


jQuery.validator.addClassRules("dept_date", { 
    greaterrule: ".dept_date" 
}); 

HTML -

First Date <input type="text" name="first_date" class="dept_date"> <br> 
Second Date <input type="text" name="second_date" class="dept_date"> <br> 
Third Date <input type="text" name="third_date" class="dept_date"> <br> 
Fourth Date <input type="text" name="fourth_date" class="dept_date"> <br> 
+0

在textchange事件或任何它是,写入逻辑来比较它与以前的文本框条目。 –

+0

使用'.prev(“.dept_date”)'获得dept_date类的前一个元素 –

+0

是克隆的文本框? – mmr

回答

1

尝试使用prevAll前要检查所有的日期和使用Date比较: -

jQuery.validator.addMethod("greaterrule", function(value, element, param) { 
 

 
    return $(element).prevAll(param).get().every(function(prev) { 
 
     return new Date($(prev).val()) < new Date($(element).val()); 
 
    }); 
 

 
}, "Please specify a greater value"); 
 

 

 
jQuery.validator.addClassRules("dept_date", { 
 
    greaterrule: ".dept_date" 
 
}); 
 

 
$("form").validate();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.14.0/jquery.validate.min.js"></script> 
 

 
<form method="post"> 
 
    First Date 
 
    <input type="text" value="01/21/2016" name="first_date" class="dept_date"> 
 
    <br>Second Date 
 
    <input type="text" value="01/22/2016" name="second_date" class="dept_date"> 
 
    <br>Third Date 
 
    <input type="text" value="01/23/2016" name="third_date" class="dept_date"> 
 
    <br>Fourth Date 
 
    <input type="text" value="01/24/2016" name="fourth_date" class="dept_date"> 
 
    <br> 
 
    <input type="submit" value="submit" /> 
 
</form>

+0

'param'参数完全没有意义,因为在声明此规则时没有设置参数。 – Sparky

+0

你可以解释一下,请@Sparky多一点,因为'param'是从'addClassRules'传入的'.dept_date'。 – BenG

+0

@ BG101 - 不起作用 – Zero4