Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在更改id为的类参数_Javascript_Jquery_Html_Datepicker_Date Range - Fatal编程技术网

Javascript 正在更改id为的类参数

Javascript 正在更改id为的类参数,javascript,jquery,html,datepicker,date-range,Javascript,Jquery,Html,Datepicker,Date Range,我在internet上找到了一个函数来验证我的datepicker函数的日期范围,它使用的是.checkin和.checkout我想为id设置工作(\checkin和\checkout),我知道我必须更改。checkin和。checkout使用\checkin。。。但问题是getMaxDate和getMinDate函数有一些我不知道是什么的js函数,例如parentNode.querySelector和.className..我如何调整我的函数以获得#id $(文档).on('focus',

我在internet上找到了一个函数来验证我的datepicker函数的日期范围,它使用的是
.checkin
.checkout
我想为id设置工作(
\checkin
\checkout
),我知道我必须更改
。checkin
。checkout
使用
\checkin
。。。但问题是getMaxDate和getMinDate函数有一些我不知道是什么的js函数,例如parentNode.querySelector和.className..我如何调整我的函数以获得#id

$(文档).on('focus','checkin,.checkout',函数(){
返回新皮卡日({
月数:2,
菲尔德:这个,
格式:“DD.MM.YYYY”,
minDate:getMinDate(这个),
第一天:1,
i18n:{
上个月:“Önceki Ay”,
下个月:“Sonraki Ay”,
月份:[“奥卡克”、“乌巴特”、“玛特”、“尼桑”、“五月”、“哈兹兰”、“坦姆兹”、“阿乌斯托斯”、“埃利吕尔”、“埃基姆”、“卡斯穆姆”、“咸海”],
工作日:[“帕扎尔”、“帕扎尔泰西”、“萨尔夫”、“圣安巴”、“佩伦贝”、“库马”、“库马蒂西”],
工作日短:[“和平”、“和平”、“和平”、“安全”、“圣战”、“和平”、“和平”、“和平”、“和平”]
},
maxDate:getMaxDate(此),
onSelect:function(){
e=this.getDate();
}
});
});
函数getMaxDate(元素){
if(element.className=='checkout'&&element.parentNode.querySelector('.checkin').value)
返回新日期(新日期(element.parentNode.querySelector('.checkin').value).getTime()+(15*24*60*60*1000));
其他的
返回新日期(2020年12月31日);
}
函数getMinDate(元素){
if(element.className=='checkout'&&element.parentNode.querySelector('.checkin').value)
返回新日期(element.parentNode.querySelector('.checkin').value);
其他的
返回新日期();
}
.line{
宽度:100%;
高度:10px;
背景:红色;
利润率:10px0;
}

好的,最初的问题是最小的问题。当时,我没有意识到它的另一个主要问题:

  • 您正在为字段上的每个
    focus
    事件创建一个新的pickaday实例。那是行不通的
所以我所做的是:

  • 我创建了一个基于选择器实例化的函数(来自旧函数)
  • 当页面加载时,我在两个输入上运行该函数
  • 完成了!一切正常
  • 此外,我简化了配置对象、标记和js,以使用ids
这是:

$(窗口).on('load',function()){
变量选择器=函数(选择器){
返回新皮卡日({
月数:2,
字段:$(选择器)[0],
格式:“DD.MM.YYYY”,
minDate:getMinDate($(选择器)[0]),
maxDate:getMaxDate($(选择器)[0]),
第一天:1,
i18n:{
上个月:“Önceki Ay”,
下个月:“Sonraki Ay”,
月份:[“奥卡克”、“乌巴特”、“玛特”、“尼桑”、“五月”、“哈兹兰”、“坦姆兹”、“阿乌斯托斯”、“埃利吕尔”、“埃基姆”、“卡斯穆姆”、“咸海”],
工作日:[“帕扎尔”、“帕扎尔泰西”、“萨尔夫”、“圣安巴”、“佩伦贝”、“库马”、“库马蒂西”],
工作日短:[“和平”、“和平”、“和平”、“安全”、“圣战”、“和平”、“和平”、“和平”、“和平”]
},
onSelect:function(){
e=this.getDate();
}
});
},  
签出=选择器(“#签出”),
签入=选取器(“#签入”);
});
函数getMaxDate(元素){
if(element.getAttribute('id')='checkin'&&element.value)
返回新日期(新日期(element.value).getTime()+(15*24*60*60*1000));
其他的
返回新日期(2020年12月31日);
}
函数getMinDate(元素){
if(element.getAttribute('id')='checkout'&&element.value)
返回新日期(元素值);
其他的
返回新日期();
}

欢迎来到jQuery

getMaxDate
getMinDate

function getMaxDate(element) {
    if ($(element).hasClass('checkout') && $(element).parent('.checkin').val())
        return new Date(new Date($(element).parent('.checkin').val()).getTime() + (15 * 24 * 60 * 60 * 1000));
    else
        return new Date(2020, 12, 31);
}

function getMinDate(element) {
    if ($(element).hasClass('checkout') && $(element).parent('.checkin').val())
        return new Date($(element).parent('.checkin').val());
    else
        return new Date();
}
正在调用的函数中的更改
$(document).on('focus', '.checkin, .checkout', function() {
    return new Pikaday({
        numberOfMonths: 2,
        field: this,
        format: "DD.MM.YYYY",
        minDate: getMinDate($(this).attr('id')), //Change here
        firstDay: 1,
        i18n: {
            previousMonth: "Önceki Ay",
            nextMonth: "Sonraki Ay",
            months: ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"],
            weekdays: ["Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"],
            weekdaysShort: ["Paz", "Pzt", "Sa", "Ça", "Pe", "Cu", "Cum"]
        },
        maxDate: getMaxDate($(this).attr('id')), //Change here
        onSelect: function() {
            e = this.getDate();
        }
    });
});

谢谢,这是我想要的,我还有一个问题,为什么我们没有改变。querySelector。签入它不会被使用?(我只是想知道:))条件的第二部分检查正确的输入是否有值。当你按下
#checkin
时,你想查看
输入。checkin
是否有值,当你按下
#checkout
时,你必须检查
输入。checkout
是否有值。是的。谢谢它是有效的,但知道它不起作用。我不明白为什么这些函数会从类元素中获取值
签入
并将其放入id为
签入
的元素中(对于
签出
,也是如此)。如果删除部分
DOM
它将不再找到元素并停止工作:)。确定。等等,我需要了解发生了什么。