2016-08-18 40 views
0

我想禁用textarea處理鍵盤事件時,當用戶按下鍵盤的輸入鍵時,textarea是空的使用angularjs。我已經能夠禁用提交按鈕,當textarea是空的,但我試圖禁用textarea時輸入事件時的textarea。使用angularjs禁用textarea

這是我的嘗試:

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

當我打從我的textarea輸入它使用下面的代碼

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

上面的代碼工作textarea的是否爲空或不觸發事件。

EDITTED:

在我的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在JSP文件

<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防止輸入事件的發生時的過文本區域爲空。

+0

通過輸入事件,你的意思是提交表單事件? – harishr

+0

Waht你想通過做這樣的禁用事件來實現,禁用一些事件,所以......? –

+0

好的,可能是你想禁用提交按鈕,當textarea中沒有文本沒有佔用空間並進入? –

回答

0

可以使用NG-KEYUP用於連接上輸入按鍵的功能,

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() != "") { // enter key press 
      send(); 
     } 
}); 

這也可能工作:

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()...

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

在敲擊輸入鍵盤時,甚至沒有任何反應當文本區域中有文字 – user6731422

+0

編輯爲了掩飾這一點,對不起我沒有很好地閱讀... –