【问题标题】:Submit an ng-form if focus is not in the textarea如果焦点不在文本区域中,则提交 ng-form
【发布时间】:2017-11-08 06:57:22
【问题描述】:

 <ng-form name="ctrl.scaleItemForm" ng-submit="ctrl.submit()">
      <input type="text"
      ng-model="ctrl.scaleItemPF.tareValue"
      name="tare-val-si">

      <textarea name="sectionLayouts"
      ng-trim="false"
      autocomplete="off"
      autocorrect="off"
      autocapitalize="off"
      spellcheck="false">
      </textarea>

      <button type="submit"
      class="button-save">
      Save
      </button>           
 </ng-form>

我正在使用 Angular 1.5.8,在我看来,我有一个带有 ng-submit 的 ng-form,以便在输入按键时触发提交功能。我在 ng-form 中有一个 textarea,在 textarea 中按下回车键时的默认行为是换行符,它与表单的提交同时发生,如果焦点在纹理上,我不想提交表单,相反,我需要一条新线。如果用表单标签而不是 ng-form 替换,它会按预期工作。这是与 ng-form 相关的错误还是我做错了什么

结束问题。 如果焦点在textarea,则不要在输入按键时提交表单,否则应提交表单。

【问题讨论】:

标签: javascript html angularjs forms


【解决方案1】:

是的,这是一个带有 ng-forms 和 ng-sumbit 的 issue

它们不是为协同工作而设计的。 ng-submit 是一个触发表单标签提交事件的指令。 但是 ng-form 不是 HTML5 表单,它是 angular FormController 的一个实例。 这意味着带有 ng-submit 的 ng-form 不会触发提交,因为 ng-form 不会创建 HTML5 表单标签。如果您检查应用程序中的 HTML,您会看到这一点。 所以,为了四舍五入,你需要使用而不是指令。

【讨论】:

    【解决方案2】:

    if (event && event.target.nodeName === 'TEXTAREA'
              && event.keyCode === 13) {
                return undefined;
    }

    通过将 $event 传递给提交函数并检查当前输入是否为 textarea 并且 enter 键已触发提交函数返回 'undefined' 以继续 textarea 的默认行为以将光标移动到下一个来修复问题行。

    【讨论】:

      猜你喜欢
      • 2011-05-24
      • 1970-01-01
      • 2011-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-13
      • 1970-01-01
      • 2011-02-06
      相关资源
      最近更新 更多