Я хочу поймать событие нажатия клавиши ввода в текстовом поле ниже. Чтобы было понятнее, я использую ng-repeat
для заполнения текст. Вот HTML-код:
<td><input type="number" id="closeqty{{$index}}" class="pagination-right closefield"
data-ng-model="closeqtymodel" data-ng-change="change($index)" required placeholder="{{item.closeMeasure}}" /></td>
Это мой модуль:
angular.module('components', ['ngResource']);
Я использую ресурс для заполнения таблицы, и мой код контроллера:
function Ajaxy($scope, $resource) {
//controller which has resource to populate the table
}
angularjs
angularjs-directive
angular-ui
Венката Тата
источник
источник
Ответы:
Вам нужно добавить
directive
, как это:Javascript :
HTML :
источник
keydown
иkeypress
к элементу, которому она приписана. Когда событие получено, предоставленное выражение оценивается внутри$apply
блока.var key = typeof event.which === "undefined" ? event.keyCode : event.which;
до тех пор, пока event.which не используется каждым браузером. Смотрите комментарии здесь: stackoverflow.com/a/4471635/2547632keyup
в тесте связыванияАльтернативой является использование стандартной директивы
ng-keypress="myFunct($event)"
Тогда в вашем контроллере вы можете иметь:
источник
ng-keypress
кажется, не быть частью углового 1.0.x,ui-keypress
(с несколько различных вызовов семантикой) доступен , хотя: angular-ui.github.io/ui-utilsМой самый простой подход, использующий только угловую встроенную директиву:
ng-keypress
,ng-keydown
Илиng-keyup
.Обычно мы хотим добавить поддержку клавиатуры для чего-то, что уже обрабатывается с помощью ng-click.
например:
Теперь давайте добавим поддержку клавиатуры.
запуск по клавише ввода:
по пробелу:
по пробелу или введите ключ:
если вы находитесь в современном браузере
Подробнее о keyCode:
keyCode устарел, но хорошо поддерживается API, вместо этого вы можете использовать $ evevt.key в поддерживаемом браузере.
Подробнее смотрите в https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key
источник
Еще одна простая альтернатива:
И альтернатива NG-UI:
источник
Вот что я понял, когда создавал приложение с аналогичным требованием, для него не нужно писать директиву и относительно просто сказать, что оно делает:
источник
Вы можете использовать ng-keydown = "myFunction ($ event)" в качестве атрибута.
источник
HTML
controller.js
источник
Вы также можете применить его к контроллеру родительского элемента. Этот пример можно использовать для выделения строки в таблице с помощью клавиш со стрелками вверх / вниз.
источник
Попытка
ничего не сделал для меня
Задушить образец на https://docs.angularjs.org/api/ng/directive/ngKeypress , который выполняет ng-keypress = "count = count + 1", работает.
Я нашел альтернативное решение, при котором нажатие Enter вызывает кнопку ng-click.
источник
ng-keypress="console.log('foo')"
у меня тоже не сработало, но если у вас такng-keypress="fooMethod()"
и у вас работает контроллер$scope.fooMethod = function() { console.log('fooMethod called'); }
.источник
Это продолжение ответа от EpokK.
У меня была та же проблема с необходимостью вызывать функцию области видимости, когда ввод вводится в поле ввода. Однако я также хотел передать значение поля ввода в указанную функцию. Это мое решение:
});
Использование в HTML выглядит следующим образом:
Престижность EpokK за его ответ.
источник
<input type="text" name="itemname" ng-model="item.itemname" lta-enter="add(item.itemname)" placeholder="Add item"/>
Что насчет этого?:
Теперь, когда вы нажимаете клавишу ввода после того, как что-то записали в свой ввод, форма знает, как с этим справиться.
источник
chat.sendMessage()
определяетсяПример кода, который я сделал для своего проекта. В основном вы добавляете теги к своей сущности. Представьте, что у вас есть введенный текст, при вводе имени тега вы получаете выпадающее меню с предварительно загруженными тегами на выбор, вы перемещаетесь со стрелками и выбираете с помощью Enter:
HTML + AngularJS v1.2.0-rc.3
Controller.js
CSS + Bootstrap v2.3.2
источник
Я немного опоздал .. но я нашел более простое решение, используя
auto-focus
.. Это может быть полезно для кнопок или других, когда выдаетdialog
:<button auto-focus ng-click="func()">ok</button>
Это должно быть хорошо, если вы хотите нажать кнопку
on
пробела или Enter кликов.источник
вот моя директива:
Применение:
источник
Вы можете использовать ng-keydown, ng-keyup, ng-press, такие как эта.
источник
Я думаю, что использование document.bind немного более элегантно
Чтобы получить документ для конструктора контроллера:
источник
источник
Все, что вам нужно сделать, чтобы получить событие является следующее:
Директива может сделать это, но это не так, как вы это делаете.
источник