<form novalidate name="frm1" autocomplete="off">
//UI elements
<div class="col-sm-3 col-sm-offset-6">
<button ng-click="MyFunc()">Next Step</button>
</div>
</form>
单击enter key
。在没有提交按钮的上述表单上时,您可以告诉我如何触发MyFunc()
方法。预先感谢。
尝试以下:
<input ng-keyup="$event.keyCode == 13 ? MyFunc() : null" >
在表单级别您可以使用以下方式:
<form ng-submit="myFunc()" ...>
我在下面提到了指令,并且有效。
指令:
angular.module('app.directives')
.directive('ngEnter', function () { //a directive to 'enter key press' in elements with the "ng-enter" attribute
return function (scope, element, attrs) {
element.bind("keydown keypress", function (event) {
if (event.which === 13) {
scope.$apply(function () {
scope.$eval(attrs.ngEnter);
});
event.preventDefault();
}
});
};
})
html
<form novalidate name="frm1" autocomplete="off">
//UI elements
<input name="userName" type="text" ng-enter="MyFunc()"/>
<div class="col-sm-3 col-sm-offset-6">
<button ng-click="MyFunc()">Next Step</button>
</div>
</form>
简单地写(keyup.enter)=" your_function_name()"在您的HTML文件中以相同的方式写(单击)。以下是代码片段。 <input type="text" [(ngModel)]="modelSearchedData" (keyup.enter)="getModelList()">
您应该做的是在提交事件上绑定您的功能,而不是输入密钥。您不应该专注于Enter,因为对于iPhone上的典范,有一个键盘按钮要执行表单,其行为就像Enter一样,但不是Enter Enter Event ...而iPhone只是一个景象:D
因此,您应该通过输入<type="submit"/>
更改<button>
这样,enter key
将自动触发表单提交事件。
然后在您的提交事件中,return false;
以防止HTML操作(发送表格)并执行您的代码。
html
<form novalidate name="frm1" autocomplete="off">
//UI elements
<div class="col-sm-3 col-sm-offset-6">
<input type="submit" value="Next Step" />
</div>
</form>
JS
$('form').submit(function () {
MyFunc();
return false;
});
我希望这个答案您的问题。
ps:如果您不想使用jQuery,则可以使用ng-submit代替jQuery选择器。
我找到了不需要指令的解决方案。我已经在使用ng-change捕获每个按键并执行搜索,但是单击Enter会将我的SharePoint页面置于编辑模式。SharePoint不能让您访问表单标签,因此这些解决方案中的大多数对我不起作用。
这个解决方案要简单得多,并且将我的代码保存在同一位置,我有一个NG变化和NG-Keypress事件,指向同一事件处理程序,vm.txtsearchchange():
html
<input id="txtSearch" type="text" style="width: 400px;" ng-change="vm.txtSearchChange()"
ng-keypress="$event.keyCode == 13 ? vm.txtSearchChange($event) : null"
ng-model="vm.Search" ng-model-options="{debounce: 200}"/>
请注意,NG-Crange事件不会传递$事件属性,并处理合法的密钥按下,而NG-Keypress事件仅适用于Enter键。
脚本
vm.txtSearchChange = function ($event) {
if ($event) {
$event.preventDefault();
return;
}
console.log("Search: " + vm.Search);
vm.showResults();
} // end vm.txtSearchChange
$ event不是null时,它是Enter密钥,我们致电DestrestDefault(),并且不要进一步处理。当$ event为null时,它是一个有效的键,我们将其传递给vm.showresults()处理。
这里的大多数答案都涉及根本不需要的其他解决方法,您可以通过进行这两个小更改来处理标准表单提交,并且Enter键将根据需要起作用。
- 将ng-click从按钮移至表单,并使其成为ng-submit
- 将类型="提交"到按钮
对于带有多个按钮的更复杂的表格,您可能需要尝试一些解决方法,但是在大多数情况下,这都可以使用。
<form novalidate name="frm1" autocomplete="off" ng-submit="MyFunc()">
//UI elements
<div class="col-sm-3 col-sm-offset-6">
<button type="submit">Next Step</button>
</div>
</form>
<input type="text" name="Inputvalue" id="Inputvalue" ng-change="EnableDisableCheckButton()" ng-model="enteredInputValue" ng-disabled="isDisabledInputvalueTextbox" ng-blur="" data-ng-keypress="onEnterKeyPress($event)" />
<button type="button" class="btn btn-primary" ng-disabled="isDisabledCheckButton" ng-click="ValidateInputvalue()">Check</button>
和在您的JavaScript文件中,添加下面:
$scope.onEnterKeyPress = function (event) {
if (event.charCode == 13) //if enter is hot then call ValidateInputvalue().
$scope.ValidateInputvalue();
}
此示例对我有用:
html代码:
<input matInput type="text" [(ngModel)]="searchString" ng-change="startSearch()" ng-keypress="$event.keyCode == 13 ? startSearch($event) : null">
打字稿:
@HostListener('document:keypress', ['$event'])
startSearch(event: KeyboardEvent) {
if (event.code === "Enter") {
//Code that you need to run
}
}
https://go.tiny.cloud/blog/angular-5-tutorial-step-step-step-guide-first-angular-5-app/