2016-12-30 64 views
0

我选择使用jQuery datepicker的多日期,但我不想两次选择相同的日期。这很难解释。如何拒绝同一日期到输入字段?

我创建了一个演示,它可以帮助你们了解好得多。

$(function() { 
 
    $('.date-picker').datepicker({ 
 
    changeMonth: true, 
 
    changeYear: true, 
 
    showButtonPanel: true, 
 
    dateFormat: "MM yy", 
 
    onClose: function(dateText, inst) { 
 
     var months = $("#ui-datepicker-div .ui-datepicker-month :selected").val(); 
 
     var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val(); 
 
     $(this).datepicker('setDate', new Date(year, months, 1)); 
 
     var monthSelect = $("#monthSelector").val(); 
 
     var d = new Date(monthSelect).getTime(); 
 
     $("#month").val($("#month").val() + d + ","); 
 
    } 
 
    }); 
 
});
.ui-datepicker-calendar { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> 
 
<input type="text" id="monthSelector" class="date-picker"> 
 
<input type="text" id="month">

+0

请更正您的拼写错误JavaScript以避免与Java发生冲突。 [JavaScriptIsNotJava.io](http://javascriptisnotjava.io) –

+0

@BasilBourque哦,对不起,这是自动纠正 –

+0

如果你只有一个日期选择器,你如何告诉“第一次”和“第二次”日期是选择?你在“时间”之间存储日期吗?尝试清楚地阐明你的问题,解决问题将变得更容易。 – 9000

回答

2

店在阵列中的每个日期和检查重复每次 “添加新的日期” 事件occure

$(function() { 
 
    var dateArray = []; // for storing selected date as an array 
 
    
 
    $('.date-picker').datepicker({ 
 
    changeMonth: true, 
 
    changeYear: true, 
 
    showButtonPanel: true, 
 
    dateFormat: "MM yy", 
 
    onClose: function(dateText, inst) { 
 
     var isNotDuplicated = true; // for checking duplicated 
 
     var months = $("#ui-datepicker-div .ui-datepicker-month :selected").val(); 
 
     var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val(); 
 
     $(this).datepicker('setDate', new Date(year, months, 1)); 
 
     var monthSelect = $("#monthSelector").val(); 
 
     var d = new Date(monthSelect).getTime(); 
 
     
 
     // each time we have a new selected date, we check it for duplicated before using it 
 
     for(let dd of dateArray) { 
 
     if(d == dd) { 
 
     // new selected date is duplicated, so we set flag isNotDuplicated to false, that will cause logics below to ignore it. 
 
      isNotDuplicated = false; 
 
      break; 
 
     } 
 
     } 
 
    
 
     if(isNotDuplicated) { 
 
     // new date is not duplicated, so we use it. 
 
     dateArray.push(d); 
 
     $("#month").val($("#month").val() + d + ","); 
 
     } 
 
    } 
 
    }); 
 
});
.ui-datepicker-calendar { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> 
 
<input type="text" id="monthSelector" class="date-picker"> 
 
<input type="text" id="month">

+0

我正在将输入字段转换为数组,并通过“for循环”进行比较。但是我不知道如果在array.n中找到重复,该怎么办。如果能指导我通过编码 –

+0

上面的代码应该回答你的问题 –

+0

谢谢它的作品! –

相关问题