【问题标题】:Disable the date after select in datepicker在日期选择器中选择后禁用日期
【发布时间】:2014-11-10 17:07:25
【问题描述】:

我在选择任何日期后禁用日期选择器上的日期时遇到问题。

我的 HTML 标记:

Day 1 <input type="text" id="datepicker1" name="datepicker1" /> <br/>
Day 2 <input type="text" id="datepicker2" name="datepicker2" />  <br/>
Day 3 <input type="text" id="datepicker3" name="datepicker3" /><br/>
Day 4 <input type="text" id="datepicker4" name="datepicker4" /><br/>
Day 5 <input type="text" id="datepicker5" name="datepicker5" /><br/>
Day 6 <input type="text" id="datepicker6" name="datepicker6" /><br/>
Day 7 <input type="text" id="datepicker7" name="datepicker7" /><br/>

我使用的 JavaScript:

var dates = $("#datepicker1, #datepicker2, #datepicker3, #datepicker4, #datepicker5, #datepicker6, #datepicker7").datepicker({
    minDate: "0",
    maxDate: "+2Y",
    defaultDate: "+1w",
    dateFormat: 'mm/dd/yy',
    numberOfMonths: 1,
    onSelect: function(date) {
        for(var i = 0; i < dates.length; ++i) {
            if(dates[i].id < this.id)
                $(dates[i]).datepicker('option', 'maxDate', date);
            else if(dates[i].id > this.id)
                $(dates[i]).datepicker('option', 'minDate', date);
        }
    } 
});

My JsFiddle Demo

我在 JsFiddle 上得到了 useful script。选择 1 个日期后,日期会正确禁用。但我需要在 7 天使用它。所以任何人都可以帮助我在我的 jsfiddle 示例中为我使用那个有用的脚本!

## 我希望日期在选择后将被禁用。将无法选择下一步。

【问题讨论】:

  • 我想我完全误解了你对这个问题的意图。您希望日期本身不再在您的日期选择器中可用,而不是禁用输入字段。我会删除我的答案。
  • 是的...在您的下一个答案中对我有帮助吗?
  • jsfiddle.net/SirDerpington/h3wGx/4 那里工作正常,但我不能在那里添加 7 个日期

标签: javascript jquery jquery-ui jquery-plugins datepicker


【解决方案1】:

这里是另一个版本,当在输入字段中选择日期时,日期不可用,http://jsfiddle.net/tfqyakn2/6/

var datesMin = [];
var dates = $("#datepicker1, #datepicker2, #datepicker3, #datepicker4, #datepicker5, #datepicker6, #datepicker7").datepicker({
minDate: "+0",
maxDate: "+2Y",
defaultDate: "+1w",
dateFormat: 'mm/dd/yy',
numberOfMonths: 1,
onSelect: function(date) {               
    datesMin.push( new Date( $(this).val() ) );         
},
beforeShow: function() {        
    $(this).datepicker("option", "minDate", maxi());
 }   
});

function sortDates(a, b){
return a.getTime() - b.getTime();
}   

function maxi(){ 
var sorted = datesMin.sort(sortDates);    
var minDate;
if(datesMin.length > 0){
minDate = sorted[sorted.length-1];    
} else {
minDate = 0;    
}
return minDate;
} 

【讨论】:

【解决方案2】:

据我了解,您希望禁用在日期字段中选择的日期,并且该日期不应该对其余输入字段(日期选择器)可用。

我对您的脚本进行了一些更改: http://jsfiddle.net/tfqyakn2/5/

我相信这就是您正在寻找的答案。

var disabledDates = [];

var dates = $("#datepicker1, #datepicker2, #datepicker3, #datepicker4, #datepicker5, #datepicker6, #datepicker7").datepicker({
    minDate: "0",
    maxDate: "+2Y",
    defaultDate: "+1w",
    dateFormat: 'mm/dd/yy',
    numberOfMonths: 1,
    onSelect: function(date) {        
        disabledDates.push($(this).val());        
    },
    beforeShowDay: unavailable
});

function unavailable(date) {
    dateZero = ('0' + (date.getMonth()+1)).slice(-2) + '/'
             + ('0' + date.getDate()).slice(-2) + '/'
             + date.getFullYear();    
    if ($.inArray(dateZero, disabledDates) < 0) {
        return [true,"","Available Date"];
    } else {
        return [false,"","Not Available Date"];
    }
}

【讨论】:

  • 感谢您的友好回答。有一个小问题..我希望你能帮助解决这个问题。当我在第 1 天选择未来日期时,过去的日期仍然可以在第 2 天或其他日期选择。它也应该被禁用。请检查:s5.postimg.org/gjckv1zzb/freelancingcare_2014_09_17.jpg
  • 感谢您对我的帮助..请检查我对您的第二个答案的评论。我在这里再次写它“s5.postimg.org/60cl5vxbb/freelancingcare_2014_09_17.jpg 看那个兄弟..我仍然可以在那里添加相同的日期:(我希望用户不能一次又一次地添加相同的日期。请看 jsfiddle.net /SirDerpington/h3wGx/4 jsfiddle 那里你不能选择同一天。我希望在我的脚本中使用类似的方式。"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
  • 2021-08-22
  • 1970-01-01
相关资源
最近更新 更多