2017-06-07 3 views
2

NG-フォームを送信フォーカスがテキストエリア

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

にない場合、私は角1.5.8を使用しています、私の見解では、私はNG-提出するので、それに接続して、NG-フォームを持っていますキー入力時にサブミット機能をトリガする。私はng形式の中にtextareaを持っていますが、textareaの中にあるEnterキーを押したときのデフォルトの振る舞いは改行で、フォームの提出と一緒に起こっています。もし焦点がテクスチャであれば、代わりに私は新しい行が必要です。 ng-formの代わりにformタグで置きかえれば、期待どおりに動作します。これはNGフォームに関連するバグですか、何か間違っていますか?

質問をラップしてください。 フォーカスがテキストエリアにある場合は、キー入力時にフォームを送信しないでください。そうでない場合は、フォームを送信する必要があります。

+0

有用な場合はこちらをチェックしてくださいhttps://github.com/angular/angular.js/issues/5856 – XYZ

答えて

1

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

次の行にカーソルを移動するtextareaのデフォルトの動作を続行します。

0

はい、これはng-formsとng-sumbitのissueです。

これらは一緒に動作するようには構築されていません。 ng-submitは、formタグのsubmitイベントをトリガーするディレクティブです。 ng-formはHTML5形式ではなく、FormControllerのインスタンスです。 これは、ng-formがHTML5フォームタグを作成しないため、ng-submitとng-submitが送信をトリガーしないことを意味します。アプリケーションでHTMLをチェックすると、そのことがわかります。 したがって、切り上げるには、ディレクティブの代わりに使用する必要があります。提出関数に$イベントを渡すと、現在の入力がテキストエリアであるかどうかを確認し、キーを入力するようにチェックすることで問題はように提出する機能が「未定義」が返さトリガした固定

関連する問題