2016-08-18 9 views
0

anglejを使用してテキストエリアが空の場合、キーボードのEnterキーを押してもキーボードイベントを処理できないようにしようとしています。テキストエリアが空のときに送信ボタンを無効にすることができましたが、テキストエリアが空のときにイベントを入力するときにテキストエリアを無効にしようとしています。私は私のテキストエリアからエンターキーを押したときangularjsを使用してテキストエリアを無効にする

<div class="descriptionarea"> 
    <textarea ng-model="trackTxt" id="input" ></textarea> 
    <span class="buttonfortxtarea"> 
    <button ng-disabled="!trackTxt" class= "btn btn-mini description_submit" id="new-chat-button">Submit</button></span> 
    </div> 

それは上記のコードは、テキストエリアが空であるか否かが働き、次のコード

document.getElementById('input').addEventListener('keyup', function (e) { 
     var code = (e.keyCode ? e.keyCode : e.which); 
     if (code == 13) { // enter key press 
      send(); 
     } 
    }); 

を使用してイベントをトリガ:

は、これが私の試みです。

EDITTED:JSPファイル内angularjs

app.controller('TodoCtrl',function($scope){ 

    //handle javascript enter event on key up 
    // function TodoCtrl($scope) { 

    $scope.trackTxt; 
    $scope.send = function($event){ 
     alert('TEST'); 
    } 

    $scope.isEmpty = function(param){ 
    return param.trim().length === 0; 
    } 
//} 

}); 

の私のapp.jsで

<div ng-controller="TodoCtrl"> 
    <textarea ng-keyup="$event.keyCode == 13 && !isEmpty(trackTxt) && send($event)" ng-model="trackTxt" id="input" ></textarea> 
    <span class="buttonfortxtarea"> 
    <button ng-disabled="!trackTxt" ng-click="send($event)" class= "btn btn-mini description_submit" id="new-chat-button">Submit</button></span> 
    </div></div> 

どのように私は時に今まで起こってから入力したイベントを防ぐためにangularjsを使用することができますしてくださいテキスト領域は空です。あなたは、単にそれが空の場合...

document.getElementById('input').addEventListener('keyup', function (e) { 
     var code = (e.keyCode ? e.keyCode : e.which); 
     if (code == 13 && $(this).val() != "") { // enter key press 
      send(); 
     } 
}); 

これも動作するかもしれチェックすることができ

+0

で、フォームがイベントを提出する意味ですか? – harishr

+0

何かのイベントを無効にするようなイベントを無効にすることで達成したいのですか? –

+0

テキストエリアにテキストがなく、アカウントスペースを取らずに入力された場合、送信ボタンを無効にしたいのですか? –

答えて

0

ここ

ng-keyup="$event.keyCode == 13 && functionToCall()" 

が入るイベントによってdemo

おかげ

+0

このように、キーアップイベントリスナハンドラをアタッチするために、角度指示** ng-keyup **を使用できます。 –

+0

**このアップデートを確認してください** [FIDDLE](https://jsfiddle.net/U3pVM/26786/)**これはあなたが言及したすべての要件を含んでいるため、申し訳ありません。 –

+0

プロジェクトでこれを実装する際に問題が発生しています – user6731422

0

document.getElementById('input').addEventListener('keyup', function (e) { 
     var code = (e.keyCode ? e.keyCode : e.which); 
     if (code == 13 && $(this).val().length <= 0) { // enter key press 
      send(); 
     } 
}); 

をデフォルトを回避するためには、preventDefault() Event Method

document.getElementById('input').addEventListener('keyup', function (e) { 
     var code = (e.keyCode ? e.keyCode : e.which); 
     if (code == 13 && $(this).val().length <= 0) { // enter key press 
      e.preventDefault(); //This avoid the enter... 
     } 
}); 

どの程度を使用して入力します。 sendChat()...

あなたは、キーを押して入力した上で機能を取り付けるためのNG-からkeyupを使用することができます
document.getElementById('input').addEventListener('keyup', function (e) { 
     var code = (e.keyCode ? e.keyCode : e.which); 
     if (code == 13 && $(this).val().length <= 0) { // enter key press 
      e.preventDefault(); //This avoid the enter... 
     } 
     else if(code == 13 && $(this).val().length > 0) { 
      sendChat(); 
     } 
}); 
+0

キーボードの入力イベントを防止します – user6731422

+0

Enterキーボードを押すと、テキストエリアにテキストがあるとき – user6731422

+0

それをカバーするように編集されました。申し訳ありませんが、私はよく読まなかった... –

関連する問題