javascript - Angularjs:正确设置日期时间本地,但提交 null

标签 javascript jquery angularjs datetime

我正在尝试为两个输入日期时间本地字段设置默认值。我正在使用 angularjs 1.5.5。我的 .jsp 代码如下所示:

<div class="row">
    <div class="form-group col-md-12">
        <label class="col-md-2 control-label" for="dateTo">Date to</label>
        <div class="col-md-7">
            <input type="datetime-local" ng-model="ctrl.map.dateTo" id="dateTo" class="form-control input-sm" />
        </div>
    </div>
</div>

(与第二个字段类似)

这是我设置字段的 js 脚本:

$(document).ready(function(){
    var now = new Date();

    var timestampDateTo   = now.getTime() - now.getTimezoneOffset()*60000;
    var timestampDateFrom = now.getTime() - now.getTimezoneOffset()*60000 - 2*60*60*1000;

    var dateTo = new Date(timestampDateTo);
    var dateFrom = new Date(timestampDateFrom);

    $("input[id=dateTo]").val(dateTo.toISOString().substring(0,19));
    $("input[id=dateFrom]").val(dateFrom.toISOString().substring(0,19));
});

我得到了 日期字段填写得很好,

enter image description here

到目前为止一切顺利,但是当我提交表单时,这些字段是由 空值。

enter image description here 这是为什么?请注意,当我“手动”设置此字段时,它们会正确提交。

最佳答案

这是因为您设置值的方式,您直接更改 DOM 而 Angular 没有接受更改,您应该更改 ng-model 对象,而不是 DOM。在你的 Controller /Angular 代码中,你应该有类似的内容:

var now = new Date();

var timestampDateTo   = now.getTime() - now.getTimezoneOffset()*60000;
var timestampDateFrom = now.getTime() - now.getTimezoneOffset()*60000 - 2*60*60*1000;

var dateTo = new Date(timestampDateTo);
var dateFrom = new Date(timestampDateFrom);

$scope.ctrl.map.dateTo = dateTo;

在使用 Angular 时,您应该避免直接设置 DOM 值,这不是一个好习惯,最好在范围内更新 Angular 值,并让 Angular 为您更新 DOM

关于javascript - Angularjs:正确设置日期时间本地,但提交 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37203948/

相关文章:

php - 在ajax x-editable之后用条件更新php中的sql表

javascript - 使用 setInterval Javascript 时未捕获的语法错误

javascript - 显示 :none not changing behavior of css

javascript - 如何从图表js中的图表中删除轴线

caching - 如何以 Angular 检查特定网址是否已在 $templateCache 中

javascript - AngularJS 中的数组属性转换

javascript - 如何从二进制 int 中获取百分比,其中每一位代表 x 百分比?

javascript - 如何使用 Test::WWW::Selenium 将击键发送到 Firefox?

javascript - 执行scrollTop时闪烁?

javascript - 使五个宽度为 25% 的左浮动元素继续 float 到屏幕外