在这种特殊情况下,当我按Enter键时,我有什么选项可以让这些输入调用一个函数?
// HTML view //
<form>
<input type="text" ng-model="name" <!-- Press ENTER and call myFunc --> />
<br />
<input type="text" ng-model="email" <!-- Press ENTER and call myFunc --> />
</form>
// Controller //
.controller('mycontroller', ['$scope',function($scope) {
$scope.name = '';
$scope.email = '';
// Function to be called when pressing ENTER
$scope.myFunc = function() {
alert('Submitted');
};
}])
Run Code Online (Sandbox Code Playgroud) 我以为这会在Stack Overflow上的某个地方得到解答,但我找不到它.
如果我正在收听按键事件,我应该使用.keyCode还是.which确定是否按下了Enter键?
我总是做类似以下的事情:
$("#someid").keypress(function(e) {
if (e.keyCode === 13) {
e.preventDefault();
// do something
}
});
Run Code Online (Sandbox Code Playgroud)
但我看到的是使用的例子.which而不是.keyCode.有什么不同?是否比另一个更加跨浏览器友好?
在我的Angular应用程序的几个地方,我需要使用ESC键清除用户的输入.问题是,我不知道如何使用文本输入字段(textarea正在清除).看到这个小提琴:
捆绑:
<input ng-model="search.query" ui-keypress="{esc: 'keyCallback($event)'}" />
Run Code Online (Sandbox Code Playgroud)
我使用的回调:
$scope.keyCallback = function($event) {
$event.preventDefault();
$scope.search.query = '';
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以,弄清楚我需要做什么来用ESC键清除文本输入?
解决方案: 正如bmleite所建议的那样,你不应该听' keypress '而是'keydown'和'keyup'.问题是,'keydown'在Firefox中不起作用,所以只有'keyup'才能听取ESC的魔术.;)
工作小提琴:http://jsfiddle.net/aGpNf/190/
解决方案更新: 最后我不得不听'keydown'和'keyup'事件.因为在我的情况下FF确实将ESC keydown上的输入字段重置为之前的状态,所以它搞砸了我的模型.所以'keyup'清除模型和'keydown'检查模型是否为空并执行适当的操作.我还需要手动散焦输入,以防止文本弹出.:/
有没有办法在输入字段中单击ENTER键时触发事件?我发现有人建议使用的指令,但我想知道是否有一种简单的方法可以做到.
我正在使用角度1.3.
有点棘手的情况.对于下面的代码,我添加(keydown.enter)="false"了忽略textarea中的break line/enter按钮
这导致用户问题,并希望按Enter键的现有行为应自动触发"保存按钮"
知道如何在仍然关注textArea但忽略断裂线时触发Save按钮吗?
<textarea #textArea
style="overflow:hidden; height:auto; resize:none;"
rows="1"
class="form-control"
[attr.placeholder]="placeholder"
[attr.maxlength]="maxlength"
[attr.autofocus]="autofocus"
[name]="name"
[attr.readonly]="readonly ? true : null"
[attr.required]="required ? true : null"
(input)="onUpdated($event)"
[tabindex]="skipTab ? -1 : ''"
(keydown.enter)="false"
[(ngModel)]="value">
</textarea >
Run Code Online (Sandbox Code Playgroud) 我试图找出一个在Angular中通过从表单中的输入命中输入来运行函数的好方法.我在stackoverflow帖子上发现了这个:
$(".input1").keyup(function (e) {
if (e.keyCode == 13) {
// Do something
}
});
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有更好的方法来做到这一点.