Rumah > Soal Jawab > teks badan
Terdapat berbilang teg span dalam halaman dan setiap teg span terikat pada acara dwiklik Cara melaksanakannya dalam acara dwiklik, supaya tag span yang dwipipi menjadi tag input. , dan nilai dalam teg span menjadi Nilai teg input?
迷茫2017-05-15 16:57:25
1. Mudah untuk melakukannya dengan bantuan html5
ciri baharu contenteditable
dan arahan Angular.
2. Anda boleh menonton demo ini
3. Kod khusus adalah seperti berikut:
app.js
(function(){
angular.module('MyApp', [])
.controller('MyController', MyController)
.directive('contentEditable', contentEditable);
MyController.$inject = [];
contentEditable.$inject = [];
function MyController(){
var vm = this;
vm.test = 'Hello World!';
}
function contentEditable(){
return {
require: 'ngModel',
link: function (scope, element, attrs, ctrl) {
element.html(scope.vm.test);
attrs.$set('contenteditable', false);
ctrl.render = function (value) {
element.html(value);
};
ctrl.$setViewValue(element.html());
element.bind('dblclick', function () {
if (!attrs.contenteditable) {
attrs.$set('contenteditable', true);
element[0].focus();
}
});
element.bind('blur', function () {
attrs.$set('contenteditable', false);
scope.$apply(function () {
ctrl.$setViewValue(element.html());
});
});
element.bind('keydown', function (event) {
var esc_key = event.which === 27,
enter_key = event.which === 13;
if (esc_key || enter_key) {
event.preventDefault();
element[0].blur();
}
});
}
};
}
})();
index.html
<body ng-app="MyApp">
<p class="test-container" ng-controller="MyController as vm">
<p class="test" content-editable ng-model="vm.test"></p>
<hr/>
<p class="test" ng-bind="vm.test"></p>
</p>
</body>
習慣沉默2017-05-15 16:57:25
Secara umumnya, tulis dua, satu untuk disembunyikan dan satu untuk ditunjukkan:
<span ng-show="!tag.edit" ng-dblclick="tag.edit = true" ng-bing="tag.name"></span>
<input type="text" ng-show="tag.edit" ng-model="tag.name" />
高洛峰2017-05-15 16:57:25
Walaupun tidak baik untuk menukar keperluan secara santai... tetapi saya rasa apa yang anda mahu sebenarnya adalah input sebelum klik dua kali adalah baca sahaja dan tidak mempunyai sempadan Selepas klik dua kali, ia berubah daripada baca-. hanya boleh diedit dengan sempadan...
Tambahkan respons klik dua kali seperti yang dikatakan sebelumnya, dan tukar baca sahaja dan gaya dalam fungsi panggil balik.