답변:
융합을 확장하는 것뿐입니다. 이 확장 방법은 jQuery 유효성 검사 플러그인을 사용하여 작동합니다. 날짜와 숫자를 확인합니다.
jQuery.validator.addMethod("greaterThan",
function(value, element, params) {
if (!/Invalid|NaN/.test(new Date(value))) {
return new Date(value) > new Date($(params).val());
}
return isNaN(value) && isNaN($(params).val())
|| (Number(value) > Number($(params).val()));
},'Must be greater than {0}.');
그것을 사용하려면 :
$("#EndDate").rules('add', { greaterThan: "#StartDate" });
또는
$("form").validate({
rules: {
EndDate: { greaterThan: "#StartDate" }
}
});
code
if (value == 0) {true를 반환합니다. } 다른 (/ 잘못된 경우 |! NaN이 / ...code
var startDate = new Date($('#startDate').val());
var endDate = new Date($('#endDate').val());
if (startDate < endDate){
// Do something
}
그렇게해야한다고 생각합니다
파티에 조금 늦었지만 여기는 내 부분
Date.parse(fromDate) > Date.parse(toDate)
세부 사항은 다음과 같습니다.
var from = $("#from").val();
var to = $("#to").val();
if(Date.parse(from) > Date.parse(to)){
alert("Invalid Date Range");
}
else{
alert("Valid date Range");
}
jquery.validate.js 및 jquery-1.2.6.js를 참조하십시오. 시작일 텍스트 상자에 startDate 클래스를 추가합니다. 종료 날짜 텍스트 상자에 endDate 클래스를 추가합니다.
이 스크립트 블록을 페이지에 추가하십시오.
<script type="text/javascript">
$(document).ready(function() {
$.validator.addMethod("endDate", function(value, element) {
var startDate = $('.startDate').val();
return Date.parse(startDate) <= Date.parse(value) || value == "";
}, "* End date must be after start date");
$('#formId').validate();
});
</script>
도움이 되었기를 바랍니다 :-)
나는 danteuno의 대답을 땜질하고 있었고 , 의도는 좋지만 슬프게도 IE 가 아닌 여러 브라우저에서 깨졌습니다 . IE는 Date
생성자에 대한 인수로 받아들이는 것에 대해 상당히 엄격 하지만 다른 것들은 그렇지 않기 때문입니다. 예를 들어 Chrome 18은
> new Date("66")
Sat Jan 01 1966 00:00:00 GMT+0200 (GTB Standard Time)
이로 인해 코드가 "날짜 비교"경로를 취하고 모든 것이 거기에서 내리막 길로 이동합니다 (예 : new Date("11")
보다 크며 new Date("66")
원하는 효과의 반대 임).
따라서 고려한 후 "날짜"경로보다 "숫자"경로에 우선 순위를 부여하도록 코드를 수정하고 JavaScript-IsNumeric ()에서 10 진수 유효성 검사에 제공된 우수한 방법을 사용하여 입력이 실제로 숫자인지 확인했습니다 .
결국 코드는 다음과 같습니다.
$.validator.addMethod(
"greaterThan",
function(value, element, params) {
var target = $(params).val();
var isValueNumeric = !isNaN(parseFloat(value)) && isFinite(value);
var isTargetNumeric = !isNaN(parseFloat(target)) && isFinite(target);
if (isValueNumeric && isTargetNumeric) {
return Number(value) > Number(target);
}
if (!/Invalid|NaN/.test(new Date(value))) {
return new Date(value) > new Date(target);
}
return false;
},
'Must be greater than {0}.');
텍스트 필드의 날짜 값은 다음과 같은 jquery의 .val () 메서드로 가져올 수 있습니다.
var datestr1 = $('#datefield1-id').val();
var datestr2 = $('#datefield2-id').val();
비교하기 전에 날짜 문자열을 구문 분석하는 것이 좋습니다. Javascript의 Date 객체에는 parse ()-Method가 있지만 미국 날짜 형식 (YYYY / MM / DD) 만 지원합니다. 유닉스 시대가 시작된 이후의 밀리 초를 반환하므로 값을> 또는 <와 간단히 비교할 수 있습니다.
다른 형식 (예 : ISO 8661)을 원하면 정규식이나 무료 date.js 라이브러리를 사용해야합니다.
슈퍼 유저를 좋아한다면 텍스트 필드 대신 jquery ui datepickers를 사용할 수 있습니다. 날짜 범위를 입력 할 수있는 datepicker 변형이 있습니다.
http://www.filamentgroup.com/lab/date_range_picker_using_jquery_ui_16_and_jquery_ui_css_framework/
따라서이 규칙은 선택 사항이 필요했고 위의 제안 중 어느 것도 선택 사항이 아닙니다. 메서드를 호출하면 값이 필요하도록 설정하더라도 필요에 따라 표시됩니다.
이것은 내 부름입니다.
$("#my_form").validate({
rules: {
"end_date": {
required: function(element) {return ($("#end_date").val()!="");},
greaterStart: "#start_date"
}
}
});//validate()
My addMethod
는 Mike E.의 최고 등급 답변만큼 강력하지는 않지만 JqueryUI datepicker를 사용하여 날짜 선택을 강제하고 있습니다. 누군가가 날짜가 숫자인지 확인하고 방법이 선택 사항이되도록하는 방법을 말해 줄 수 있다면이 방법은 나에게 적합합니다.
jQuery.validator.addMethod("greaterStart", function (value, element, params) {
return this.optional(element) || new Date(value) >= new Date($(params).val());
},'Must be greater than start date.');
javascript / jquery에서 대부분의 개발자는 날짜 형식으로 변환하지 않고 문자열 인 From & To 날짜 비교를 사용합니다. 날짜를 비교하는 가장 간단한 방법은 현재보다 큽니다.
Date.parse(fromDate) > Date.parse(toDate)
정확한 결과를 얻기 위해 비교하기 전에 항상 시작 및 종료 날짜를 구문 분석하십시오.
$(document).ready(function(){
$("#txtFromDate").datepicker({
minDate: 0,
maxDate: "+60D",
numberOfMonths: 2,
onSelect: function(selected) {
$("#txtToDate").datepicker("option","minDate", selected)
}
});
$("#txtToDate").datepicker({
minDate: 0,
maxDate:"+60D",
numberOfMonths: 2,
onSelect: function(selected) {
$("#txtFromDate").datepicker("option","maxDate", selected)
}
});
});
또는이 링크를 방문하십시오
jQuery('#from_date').on('change', function(){
var date = $(this).val();
jQuery('#to_date').datetimepicker({minDate: date});
});
function endDate(){
$.validator.addMethod("endDate", function(value, element) {
var params = '.startDate';
if($(element).parent().parent().find(params).val()!=''){
if (!/Invalid|NaN/.test(new Date(value))) {
return new Date(value) > new Date($(element).parent().parent().find(params).val());
}
return isNaN(value) && isNaN($(element).parent().parent().find(params).val()) || (parseFloat(value) > parseFloat($(element).parent().parent().find(params).val())) || value == "";
}else{
return true;
}
},jQuery.format('must be greater than start date'));
}
function startDate(){
$.validator.addMethod("startDate", function(value, element) {
var params = '.endDate';
if($(element).parent().parent().parent().find(params).val()!=''){
if (!/Invalid|NaN/.test(new Date(value))) {
return new Date(value) < new Date($(element).parent().parent().parent().find(params).val());
}
return isNaN(value) && isNaN($(element).parent().parent().find(params).val()) || (parseFloat(value) < parseFloat($(element).parent().parent().find(params).val())) || value == "";
}
else{
return true;
}
}, jQuery.format('must be less than end date'));
}
이것이 도움이되기를 바랍니다 :)
먼저 split 함수를 사용하여 두 입력 상자의 값을 분할합니다. 그런 다음 동일한 것을 역순으로 연결하십시오. 국가를 연결 한 후 정수로 구문 분석합니다. 그런 다음 if 문에서 두 값을 비교합니다. 예 : 1> 20-11-2018 2> 21-11-2018
20181120 및 20181121 비교를 위해 새 값을 분할하고 연결 한 후 그 후에는 동일하게 비교합니다.
var date1 = $('#datevalue1').val();
var date2 = $('#datevalue2').val();
var d1 = date1.split("-");
var d2 = date2.split("-");
d1 = d1[2].concat(d1[1], d1[0]);
d2 = d2[2].concat(d2[1], d2[0]);
if (parseInt(d1) > parseInt(d2)) {
$('#fromdatepicker').val('');
} else {
}
형식이 올바른 YYYY / MM / DD이고 두 필드간에 정확히 동일한 경우 다음을 사용할 수 있습니다.
if (startdate > enddate) {
alert('error'
}
문자열 비교