我想列出項目,雙擊一個項目使其可編輯。目前,在編輯項目時,單擊外部(即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。
有誰知道如何將的焦點設回輸入欄?
確實,在'ngKeypress'我們可以做到這一點...但我們怎麼能在鼠標模糊的同時做到這一點? – SoftTimur
對於模糊,你可以使用NgBlur事件,它也在$ event中提供事件https://docs.angularjs.org/api/ng/directive/ngBlur –
@SoftTimur看到我對模糊的評論 –