我有一个活动的编辑页面,我的一个字段是日期。在某些浏览器中,它看起来像纯文本框(IE8),但是在chrome中,它显示“ dd / mm /
yyyy”,如果单击它,它还有一些其他选项可用于设置日期。
我的问题是在编辑页面上,它没有填充现有日期(我想是因为日期格式不正确?)。MVC控制器以“
2014-03-08T00:00:00”格式返回数据(仅使用基本的CRUD控制器操作)。
<form name="form" class="form-horizontal">
<div class="control-group" ng-class="{error: form.EventDate.$invalid}">
<label class="control-label" for="EventDate">Event Date</label>
<div class="controls">
<input type="date" ng-model="item.EventDate" id="EventDate">
</div>
</div>
<div class="form-actions">
<button ng-click="save()" class="btn btn-primary">
{{action}}
</button>
<a href="#/" class="btn">Cancel</a>
</div>
</form>
我已经看过很多关于使用指令和监视的文章,但这似乎很复杂。我本以为会有一种相对简单的方式来格式化模型数据,以使其以正确的格式显示并按预期工作。我不介意Chrome是否提供与其他浏览器不同的体验-
它只是一个简单的内部用户网站。我只是不喜欢编辑记录时没有预填充日期。
如果您想使用初始值填充字段,则可以执行以下操作
//Controller:
$scope.myDate = new Date('2014-03-08T00:00:00');
//HTML:
<input type="date" ng-init="model=(myDate | date:'yyyy-MM-dd')" ng-model="model" />
但是,我强烈建议创建自定义日期字段指令。
定制输入字段指令具有以下优点:
form.$valid
为false,以便您可以有条件地将表单提交到服务器。实施自定义日期指令时,需要考虑三个基本事项:
- 一个解析器,将解析输入文本并返回模型(在这种情况下为javascript日期)。
- 用于格式化模型并将其显示在文本字段中的格式化程序。
- 设置一个可选的验证标志,该标志可以在UI中用于自定义表单验证。
日期指令:
myApp.directive('dateField', function($filter) {
return {
require: 'ngModel',
link: function(scope, element, attrs, ngModelController) {
ngModelController.$parsers.push(function(data) {
//View -> Model
var date = Date.parseExact(data,'yyyy-MM-dd');
// if the date field is not a valid date
// then set a 'date' error flag by calling $setValidity
ngModelController.$setValidity('date', date!=null);
return date == null ? undefined : date;
});
ngModelController.$formatters.push(function(data) {
//Model -> View
return $filter('date')(data, "yyyy-MM-dd");
});
}
}
});
注意:对于解析日期,此指令使用Date.js(外部库)。
CSS:
.error {
color:red;
}
.error-border {
border: solid 2px red;
}
HTML:
<form name="myForm">
<input ng-class="{'error-border': myForm.myDate.$error.date}" type="date"
name="myDate" ng-model="myDate" date-field />
<span ng-show="myForm.myDate.$error.date" class="error">
Please enter a valid date!!!
</span>
<br /> Raw Date: {{myDate}}
<br /> Formatted Nicely: {{ myDate | date:'yyyy, MMMM dd'}}
<br /> Is Valid Date? {{ !myForm.myDate.$error.date}}
<br /> Is Form Valid? {{ myForm.$valid }}
</form>
控制器:
myApp.controller('ctrl', function($scope) {
$scope.myDate = new Date('2014-03-08T00:00:00');
});
演示JS小提琴与Date.js
演示JS提琴与Moment.js
本文向大家介绍jQuery实现简单的日期输入格式化控件,包括了jQuery实现简单的日期输入格式化控件的使用技巧和注意事项,需要的朋友参考一下 js代码有一百多行。 先上效果图 html代码 日期: <input type="text" id="dateInputer" class="hhm-dateInputer" placeholder="请输入日期"> 设置input元素类名为 hhm-d
尝试1 将函数绑定到KeyPress/KeyDown事件。 我有一个regex可以在输入日期时验证日期(例如,它允许“12”但不允许“13”表示月份)。 看起来都不错。但是...编辑时开始显示一些奇怪的结果 假设输入为“10/21/1999” 他们想把月份改成“12”。 所以他们把光标放在“0”后面,然后点击退格键, 值现在为“12/11/999”并且无效,阻止输入 或者,他们只是突出显示“0”,
我正在尝试将DatePicker日期格式化为简单的数据格式(“yyyy-MM-dd HH: mm: ss Z”)。有人告诉我,我需要使用简单的数据格式将其解析为日期对象-简单的数据格式(“yyyy-MM-dd”),然后将其格式化为我需要的内容,如下所示。但是,我在尝试捕捉块中收到错误“重复局部变量eDate”。任何专家都可以查看我的代码并提出建议吗? 已更新
我有一个变量在一个类在测试情况下,我需要嘲笑它。我尝试过这样 但事实的确如此 giving me无法将给定对象格式化为日期 在一台机器和另一台机器上 它给我的日期不能为空。 我是Junit新手,需要帮助解决这个问题
问题内容: 在用户更改日期之前,日期输入不会显示日期 jsbin中的示例代码 我需要它才能在稳定的1.2.14版本上工作。可能吗? 问题答案: 我创建了一个简单的指令,以使标准表单元素能够与AngularJS〜1.2.16一起正常工作。 请查看此处以获取详细信息:https : //github.com/betsol/angular-input-date 这是演示:http : //jsfiddl
本文向大家介绍C#简单输出日历的方法,包括了C#简单输出日历的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#简单输出日历的方法。分享给大家供大家参考。具体如下: 用C#输出日历,此功能可用于Ajax方式列出计划日程相关的内容,由于是C#控制输出,可以方便加上自己需要的业务处理逻辑。 1.控制台输出: 效果图: 2.Html表格输出: 希望本文所述对大家的C#程序设计有所帮助。