2016-12-30 2 views
0

Я выбираю multi date с помощью 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

магазин каждая дата в массиве и проверить для дублирования каждый раз "добавить новую дату" событие больше появляться

$(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

Я преобразую входное поле в массив и сравниваю его «для цикла». Но я не знаю, что делать, если он найдет дубликат в массиве. Будет лучше, если я смогу провести через кодирование –

+0

приведенный выше код должен ответить на ваш вопрос –

+0

Спасибо, что работает !!!! –

Смежные вопросы