"预期数量"使用.toLocalString()/。toISOString()在IE 11中出错

时间:2016-08-16 04:54:10

标签: javascript internet-explorer-11

我收到错误"号码预期"在这一行:

new Date($('#itemOpenDate').val()).toISOString();

其中$('#itemOpenDate')。val()是表示日期的字符串,例如" 8/11/2016",仅在IE 11中 (在Chrome,Firefox和Safari中测试正常)。

我已将其缩小到如何填充#itemOpenDate。请参阅以下代码。我收到错误:

('#itemOpenDate').val(new Date("8/2/2016").toLocaleString());

但以下工作正常(即使在IE 11中):

$('#itemOpenDate').val(new Date("8/2/2016").toDateString());

当然,我想要.toLocaleString提供的格式。有什么想法吗?

重现的代码:

<!doctype html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" >
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container" role="main">
    <form class="center-block form-horizontal">
        <div class="form-group">
            <label for="itemOpenDate" class="control-label">Open Date:</label>
            <input type="text" class="form-control input-lg" id="itemOpenDate">
        </div>

        <div class="form-group">
            <button id="updateItemButton"  title="Update Item" type="button" class="btn btn-primary btn-lg btn-block">Update</button>
        </div>
    </form>
</div>

<script type="text/javascript">

$(document).ready(function () {

$("#itemOpenDate").datepicker();

getPunchlistItem();

$("#updateItemButton").click(function () {
    updatePunchlistItem();
});
});

function getPunchlistItem(myPLItemID) {
$('#itemOpenDate').val(new Date("8/2/2016").toLocaleString());  //  error
$('#itemOpenDate').val(new Date("8/2/2016").toDateString());  //  no error
}

function updatePunchlistItem() {
var myOpenDate = new Date($('#itemOpenDate').val()).toISOString();
console.log(myOpenDate);
}
</script>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

我也看到了这个问题但是以不同的方式。

var date = new Date('2017-07-02 00:00:00Z').toISOString();

这适用于Chrome但不适用于IE11。在日期和时间之间添加T可以解决IE11中的问题,它仍可在Chrome中使用。

var date = new Date('2017-07-02T00:00:00Z').toISOString();

http://plnkr.co/edit/8WAhslAphwR3BHxnq3bE?p=preview

答案 1 :(得分:0)

  

其中$('#itemOpenDate').val()是表示日期的字符串,例如&#34 8 /二千零十六分之十一&#34;

有你的问题。除了the date/time format之外,JavaScript的Date构造函数不需要支持https://docs.python.org/2/library/getopt.html,这是(从ES2015规范开始)ISO-8601的一个子集(在ES5规范中,它们&# 39; d犯了一个错误,使其不是一个子集),例如2016-08-11。每当你要求它解析其他任何东西时,你就会徘徊在未定义的行为中。您需要故意解析字符串(使用您自己的代码,或使用像MomentJS这样的库)。