我发现当有人按下“回车”键时,这个问题对于提交表单非常有用:
Javascript:
angular.module('yourModuleName').directive('ngEnter', function() {
return function(scope, element, attrs) {
element.bind("keydown keypress", function(event) {
if(event.which === 13) {
scope.$apply(function(){
scope.$eval(attrs.ngEnter, {'event': event});
});
event.preventDefault();
}
});
};
});
超文本标记语言:
<div ng-app="" ng-controller="MainCtrl">
<input type="text" ng-enter="doSomething()">
</div>
我想知道的是,当按下“回车”键时,将字段设置为模糊。模糊sender字段的效果是什么?
我想保留ngEnter指令的原样,因为我想将其重新用于其他函数。
更新:我知道我可以创建一个完整的指令来进行模糊处理(我现在就是这么做的),但我想做的是能够做这样的事情:
<input type="text" ng-enter="this.blur()">
或者如何将当前元素作为参数传递?
<input type="text" ng-enter="doBlur(this)">
SoluableNonagon离它很近。你只需要使用正确的论点。该指令将事件参数声明为event,而不是event。您可以将指令更改为使用$event
,就像ngClick所做的那样(或者保留它并将其用作ng enter=“doSomething(event)”
。
angular.module("app", [])
.controller('MainController', MainController)
.directive('myEnter', myEnter);
function MainController() {
var vm = this;
vm.text = '';
vm.enter = function($event) {
$event.target.blur();
vm.result = vm.text;
vm.text = '';
}
}
myEnter.$inject = ['$parse'];
function myEnter($parse) {
return {
restrict: 'A',
compile: function($element, attr) {
var fn = $parse(attr.myEnter, null, true);
return function(scope, element) {
element.on("keydown keypress", function(event) {
if (event.which === 13) {
// This will pass event where the expression used $event
fn(scope, { $event: event });
scope.$apply();
event.preventDefault();
}
});
};
}
};
}
<script src="https://code.angularjs.org/1.4.8/angular.js"></script>
<div ng-app="app" ng-controller="MainController as view">
<input my-enter="view.enter($event)" ng-model="view.text">
<div ng-bind="view.result"></div>
</div>
对于角度2
<input ... (keydown.enter)='$event.target.blur()'>
在尝试了一系列操作之后,这似乎是不可能的,因为您需要传递$event来获取目标元素,所以单独的指令似乎是唯一的方法:
我们的愿望:
您无法传递此,因为它引用范围,所以您需要传递事件。
<input type="text" ng-enter="doBlur($event)">
一旦你有了事件,你就可以从中获得目标。
$scope.doBlur = function($event){
var target = $event.target;
// do more here, like blur or other things
target.blur();
}
但是,您只能在诸如ng click之类的指令中获得pass事件。。。有点不满意。如果我们可以在指令之外传递$event,我们就可以按照您要求的可重用方式进行模糊处理。
用AngularJS按回车键提交表单这个问题使用html5按钮,但我使用角度材质按钮作为 但是如何使用它呢
问题内容: 我已经试过了: 给出错误: 问题答案: Keyup / Keydown仅限于WebDriver中的修饰键(Shift,Ctrl等)。我想你要
问题内容: 我想在用户按下键盘上的Enter键时传递值。在事件中,我得到的价值,但在如何获得这个值是按键? 码: 问题答案: 使用事件,并在其中检查用户按下的键的键码。密钥的密钥代码为13,检查代码并在其中放置逻辑。 检查以下示例: 注意: 用Material-Ui 替换元素,并定义其他属性。
我有一个有多个输入框的表单,当第一个输入框有焦点时,如果我按Enter键,那么路线就会改变并导航到某个地方。我怎样才能阻止它?
我有一个角2+表单组,每个表单字段都有tabindex。 如何在每次按Enter键时将焦点更改为下一个表单字段(类似于按tab键)? JavaScript Reference-Enter键的行为类似于JavaScript中的标签
问题内容: 我正在使用Selenium Server(v2.21)和SeleniumJavaClient(v.2.21.0)来自动化Web表单,该表单需要在每次输入后都按下键,因为字段是根据输入的值公开的。因此,根据此处的解决方案,我一直在尝试不同的方法以在表单中输入字符串并按-这是我尝试过的方法: 它会 看起来 像这是最合理的解决方案(),但是编译器抛出,如果你不添加一个错误,因为期待一个字符串