2016-06-14 8 views
0

私はng-repeatのテキストエリアにオブジェクトの内部にテキストを保存しています。私が必要とするのは、Enterを押して新しいテキストエリアを作成し、新しいテキストエリアにフォーカスを移動し、前のテキストエリアに新しいラインを追加しないときです。だから、私はこれのようなものです。テキストエリア内のng-model変数からnewLineを削除します

//Javascript 
$scope.texts = [{}]; 
var addNewLine = function(index){ 
    var newObj = {}; 
    // NEXT LINE IS NOT WORKING 
    $scope.texts[index].text=$scope.texts[index].text.replace(/\n|\r|\r\n|\n\r/g, ''); 
    $scope.texts.splice(index+1, 0, newObj); 
    $scope.selected = newObj; 
} 
var removeLine = function(index){ 
    if(!$scope.texts[index].text||$scope.texts[index].length==0){ 
     $scope.texts.splice(index, 1); 
     if(index==0) $scope.selected = $scope.texts[1]; 
     else $scope.selected = $scope.texts[index-1]; 
    } 
} 
$scope.checkPress = function(event, index){ 
    if(event.keyCode == 13) addNewLine(index); 
    else if(event.keyCode == 8) removeLine(index); 
} 

//HTML 
<textarea ng-repeat="textObj in texts" 
ng-model="textObj.text" ng-keyup="checkPress($event, $index)" 
focus-if="selected.$$hashKey == textObj.$$hashKey" 
ng-click="selected=textObj"></textarea> 

ここで、フォーカス - 私はTHIS PLUGINを使用しています。新しいtextareaを追加すると、以前のtextareaからnewLineを削除するにはどうすればよいですか?

+0

1行のデータだけをキャプチャする場合は、なぜ 'input'ではなく' textarea'を使用していますか?また、あなたは本当にここで質問していません。あなたのコードを操作していないものがありますか? – Claies

+0

私はtextareaが必要です、コンテナの幅が十分でないとき、入力は2行を作っていません。問題は、置換が機能しない理由、最後の空行を削除しない理由です。 –

答えて

0
<textarea ng-keyup="checkPress($event, $index)" ng-keydown="$event.keyCode == 13 && $event.preventDefault()" focus-if="selected.$$hashKey == objRow.$$hashKey" ng-click="selectText(objRow)"></textarea> 

基本的には、enterの場合のデフォルトを防止しています。

関連する問題