【发布时间】:2017-03-26 19:17:54
【问题描述】:
我想制作一个项目列表,双击一个项目使其可编辑。目前,在编辑项目时,单击外部(即blur)或通过键盘输入会提交新值。
我希望能够仅在它不为空或不满足模式(例如,带有. 的文件名)时提交新更改。
我试过ng-required="true",还是不行。
有人知道如何设置这个限制吗?
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
<style>
input {
font-size: 20px;
border:none;
background-color:transparent;
}
</style>
</head>
<body ng-app="app" ng-controller="Ctrl">
<table>
<tr ng-repeat="item in items">
<td>
<input type="text" value="{{item.name}}" ng-blur='eEditable = -1' ng-readonly='$index !== eEditable' ng-dblclick="eEditable = $index" ng-keypress="keypress($event)" ng-required="true"/>
</td>
</tr>
</table>
<script>
var app = angular.module('app', []);
app.controller('Ctrl', ['$scope', function ($scope) {
$scope.items = [{ name: "item #1" }, { name: "item #2" }, { name: "item #3" }];
$scope.eEditable = -1;
$scope.keypress = function ($event) {
if ($event.keyCode === 13)
$event.target.blur()
}
}])
</script>
</body>
</html>
编辑1:现有答案建议使用form,但我不想使用form 或submit 按钮。
一种解决方案是在myBlur 函数中验证新值:如果不满足模式,我们可以将焦点设置回输入字段并让用户再次修改该值。这是另一个JSBin。
有谁知道如何将焦点重新设置回输入字段?
【问题讨论】:
标签: javascript angularjs angularjs-directive