【发布时间】:2014-07-07 20:38:09
【问题描述】:
Angular 仅在用户输入有效的电子邮件地址后从 input[email] 更新模型。如何在页面上的某处添加{{binding}},该{{binding}} 将随着电子邮件值随着用户键入而更新——甚至在用户输入有效电子邮件地址之前?
这是我迄今为止尝试过的:
<div ng-app>
<div ng-controller="MyCtrl">
<form name="MyForm" novalidate>
Name: <input type="text" name="name" ng-model="contact.name" /><br/>
Name as you type: {{contact.name}}<br/>
Email: <input type="email" name="email" ng-model="contact.email" /><br/>
Email as you type: {{contact.email}} (doesn't work)<br/>
Also doesn't work: {{$document.forms.MyForm.elements.email.value}}
</form>
</div>
</div>
控制器:
function MyCtrl($scope) {
$scope.contact = {};
}
姓名会按我的意愿实时更新,但电子邮件不会。
我想启用电子邮件验证。我只需要一些方法来绑定未经验证的input[email] 文本,因此它会随着用户键入而更新。
2014/7/8 更新
我想添加一个明确的要求,即type="email" 保持不变。我不想改变标记的语义来解决框架的限制。如果需要,我宁愿引入一个互补的依赖项(例如 jQuery)来填充所需的功能。
我不反对在控制器中处理验证——如 rageandqq 和 charlietfl 所建议的——如果它可以轻松完成的话。不过环顾四周,it looks like it could be tricky(根据我的要求)。
【问题讨论】:
标签: angularjs validation