【问题标题】:How to save form fields by pressing enter in Angularjs x-editable?如何通过在Angularjs x-editable中按回车键保存表单字段?
【发布时间】:2016-02-16 01:26:14
【问题描述】:

我正在尝试使用 Angularjs x-editable 保存表单字段。在他们网站上的给定示例中,他们使用保存按钮来保存字段。但是,我试图在不按保存按钮的情况下实现保存功能。相反,我希望能够在任何可编辑字段(名称、状态、组)上按 Enter 键时保存。我知道这可以通过按 Enter 在传统形式上实现,但在这种情况下似乎不起作用。

这里是链接http://vitalets.github.io/angular-xeditable/#editable-form

和 JSFiddle。 http://jsfiddle.net/NfPcH/93/

感谢任何帮助,谢谢。

HTML

    <h4>Angular-xeditable Editable row (Bootstrap 3)</h4>
<div ng-app="app" ng-controller="Ctrl">
   <table class="table table-bordered table-hover table-condensed">
    <tr style="font-weight: bold">
      <td style="width:35%">Name</td>
      <td style="width:20%">Status</td>
      <td style="width:20%">Group</td>
      <td style="width:25%">Edit</td>
    </tr>
    <tr ng-repeat="user in users">
      <td>
        <!-- editable username (text with validation) -->
        <span editable-text="user.name" e-name="name" e-form="rowform" onbeforesave="checkName($data, user.id)" e-required>
          {{ user.name || 'empty' }}
        </span>
      </td>
      <td>
        <!-- editable status (select-local) -->
        <span editable-select="user.status" e-name="status" e-form="rowform" e-ng-options="s.value as s.text for s in statuses">
          {{ showStatus(user) }}
        </span>
      </td>
      <td>
        <!-- editable group (select-remote) -->
        <span editable-select="user.group" e-name="group" onshow="loadGroups()" e-form="rowform" e-ng-options="g.id as g.text for g in groups">
          {{ showGroup(user) }}
        </span>
      </td>
      <td style="white-space: nowrap">
        <!-- form -->
        <form editable-form name="rowform" onbeforesave="saveUser($data, user.id)" ng-show="rowform.$visible" class="form-buttons form-inline" shown="inserted == user">
          <button type="submit" ng-disabled="rowform.$waiting" class="btn btn-primary">
            save
          </button>
          <button type="button" ng-disabled="rowform.$waiting" ng-click="rowform.$cancel()" class="btn btn-default">
            cancel
          </button>
        </form>
        <div class="buttons" ng-show="!rowform.$visible">
          <button class="btn btn-primary" ng-click="rowform.$show()">edit</button>
          <button class="btn btn-danger" ng-click="removeUser($index)">del</button>
        </div>  
      </td>
    </tr>
  </table>

  <button class="btn btn-default" ng-click="addUser()">Add row</button>
</div>

【问题讨论】:

    标签: javascript angularjs forms form-submit x-editable


    【解决方案1】:

    根据我的经验,这样做的唯一方法是捕获 keydown 事件,传递 $event 和 rowform。在 keydown 处理程序中,您可以评估按下的键并保存表单,或者只是将当前值保存到持久存储中。

    ...
    <span editable-text="user.name" e-name="name" 
          e-form="rowform" onbeforesave="checkName($data, user.id)" 
          e-required
          e-ng-keydown="navigate($event,rowform)">
      {{ user.name || 'empty' }}
    </span>
    ...
    

    然后,在你的控制器中

    $scope.navigate = function(event,form) {
      if (event.keyCode==13) {
        //...Enter Key Processing
      } else if (event.keyCode==27) {
        //...Escape key processing
      } else if (...other key codes) 
        //...Et cetera
    }
    

    您可以使用rowform.$submit()提交表单。

    希望这会有所帮助。祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-19
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      • 2017-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多