0

我正在尝试将一些参数从预订表格发送到在线预订公司的网站。这个想法是让访问者快速重定向到网站,并以日期和日期加上一天(在 JavaScript 中)作为预订的起点。

在 Chrome 和 Firefox 中一切正常。在 IE 和 Edge 中,虽然尾端日期是通过编码发送的:

https://xxxxxxx.com/xxxxxx/?startdate=2018-02-28&adults1=1&children1=0&enddate=2018-3-01

哪个在Chrome等上运行良好。一旦在IEEdge中生成它,虽然它不起作用。它将这个发送到服务器:

https://xxxxxxx.com/xxxxxx/?startdate=2018-02-28&adults1=1&children1=0&enddate=%E2%80%8E2018-%E2%80%8E03%E2%80%8E-%E2%80%8E01% E2%80%8E

jQuery(document).ready(function () {
  jQuery('#book-room').click(function () {
    var term = jQuery('#fromdate').val();
    var dateAr = term.split('/');
    var newFromDate = dateAr[2] + '-' + dateAr[1] + '-' + dateAr[0].slice(-2);
    // Plus One Date:
    var myDate = new Date(newFromDate);
    myDate.setDate(myDate.getDate(term) + 1);
    var plusOneDate = myDate.toLocaleString( 'en-GB', { year: 'numeric', month : 'numeric', day : '2-digit' } );
    var newDay = plusOneDate.replace(/\//g, '-');
    var dateAr2 = newDay.split('-');
    var newPlusOneDate = dateAr2[2] + '-' + dateAr2[1] + '-' + dateAr2[0].substr(0); 
    window.open(decodeURIComponent("https://xxxxxxx.com/xxxxxx/?startdate=" + newFromDate + "&adults1=" + newAdults + "&children1=" + newChildren + "&enddate=" + newPlusOneDate), "_blank");
  });
})

newPlusOneDate是导致所有麻烦的变量。它应该是另一端需要的格式2018-3-01 。表格日期在任何地方都可以正常工作。

我可以正确格式化 date + one day ( newPlusOneDate) 变量的唯一方法是使用那个相当冗长的toLocaleString()函数并将其切碎。必须有更简单的方法。

我曾尝试使用decodeURIComponentanddecodeURI来摆脱编码,但没有成功。

任何关于如何在没有编码的情况下正确格式化最后一个日期字符串的建议都将非常受欢迎。

4

0 回答 0