单击Enter键时触发方法


<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/

相关内容

最新更新