Как я могу запретить пользователю вводить больше символов в текстовое поле, когда достигается максимальное количество символов?
Я использую ng-keypress прямо сейчас, но я не могу понять, как предотвратить ввод, когда предел достигнут. Пользователь не должен иметь возможность вводить или вставлять более 1000 символов в это текстовое поле.
Вопрос о том, как остановить ввод, а не как подсчитать длину ввода, эта часть уже работает отлично для меня.
$scope.$watch('comment.Comment.body', function (newValue, oldValue) {
if (newValue) {
$scope.commentLength = 1000 - newValue.length;
}
});
// Tried this, nothing stops it
$scope.updateBody = function (event) {
event.cancel();
event.stop();
return false;
};
HTML
<textarea
ng-model="comment.Comment.body"
name="comment[Comment][body]"
placeholder="Your comment..."
ng-keypress="updateBody($event)">
</textarea>
<p>
{{commentLength}} remaining
</p>
Решение:
Моя ошибка заключалась в том, что у меня была только опечатка, но данный ответ не был на 100% ОК. Вместо oldValue
требуется substring()
newValue
. Если вы этого не сделаете, вы не можете вставить текст, который превышает 1000 символов в текстовой области. Использование newValue
позволяет вставлять и вырезать текст до предела.
$scope.$watch('comment.Comment.body', function (newValue) {
if (newValue && newValue.length > 1000) {
$scope.comment.Comment.body = newValue.substring(0, 1000);
}
// Must be checked against undefined or you get problems when removing text
if (newValue != undefined) {
$scope.commentLength = 1000 - newValue.length;
}
});