我的解決辦法是部分實現的兩個提議的答案。首先,我需要將ng-trim="false"
設置爲TextArea
字段的一部分。這樣,定期計算回車率,但每次回車計算爲兩個字符。對於我們的努力來說,這被認爲是可以接受的,但對於使用此解決方案的其他人而言可能並非如此。
也就是說,您的文本區域長度爲10,您只能按回車鍵5次,才能防止再次輸入。
在控制器中,我不得不創建邏輯模擬與上面剛剛描述的字符數相同的字符數。
$scope.adjustForReturn = function() {
// 10 being the max length
$scope.remainingCharacters = 10 - $scope.feedback.replace("\r\n", "").length;
$scope.remainingCharacters = $scope.remainingCharacters - ($scope.feedback.split(/[\r\n]/).length - 1);
// Since carriage return is 2 chars, if you have one left and press enter, it will display -1. This is a fix to that edge case
if ($scope.remainingCharacters < 0) {
$scope.remainingCharacters = 0;
}
}
上述功能被綁定到使用ng-keyup="adjustForReturn()"
文本區域,以便每當用戶釋放按下的鍵,其餘的字符計數重新評估(其從UX透視效果很好)。
我還沒有測試過這個廣泛的跨瀏覽器,這一切都是在Chrome中完成的,我明白,對於我的一個同事來說,回車實際上算作一個字符,所以我想再次重新強調這個解決方案可能並不理想,並且圍繞它需要做更多的工作,但似乎有95%的解決方案。
有趣的是,必須結合使用這個答案和@ Walter的答案。兩種算法和一些算術的組合導致了一個可接受的解決方案,雖然即使如此,每個回車計數也只有2個字符(有道理,\ r \ n,儘管我做不到這一點)。 – mike 2014-11-21 04:28:10
如果您可以在這裏分享您的解決方案,那將是非常棒的。 – Anubhav 2014-11-21 07:54:04
已發佈,我使用的是兩個解決方案的混合體,發佈在這裏 – mike 2014-11-24 00:17:50