Ich möchte eine Liste von Elementen machen, Doppelklick auf einen Artikel macht es editierbar. Wenn Sie derzeit ein Element bearbeiten, wird durch Klicken außerhalb (z. B. blur
) oder durch Eingabe über die Tastatur der neue Wert eingegeben.Setzen Sie den Fokus auf den hinzugefügten Artikel
Jetzt möchte ich ein +
Symbol hinzufügen, um ein Element zur Liste hinzuzufügen. Nachdem ich auf das +
Symbol geklickt habe, möchte ich, dass der Fokus (und Doppelklick) auf dem hinzugefügten Element liegt, damit wir das direkt bearbeiten können.
Weiß jemand, wie man das erreicht?
<!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)"/>
</td>
</tr>
</table>
<div ng-click="add()">+</div>
<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()
}
$scope.add = function() {
$scope.items.push({name: "new"});
}
}])
</script>
</body>
</html>
Warum haben Sie Ihre jquery-Lösung gelöscht? Es funktioniert immer, oder? – SoftTimur
@SoftTimur - Es hat funktioniert, es war einfach nicht besonders elegant. :-) Ich mag das eine mehr, obwohl es ein undefiniertes Verhalten hätte, wenn zwei Elemente gleichzeitig auf "True" gesetzt wären. –
zwei großartige Lösungen ... vielen Dank ... – SoftTimur