現在、最大行数に達した後、Enterキーを押してテキストエリアに新しい行の作成を停止するのが難しいです。行数は、作成したコンポーネントのパラメータとして渡されます。私のtextareaはRedactorエディタであり、新しい行は改行で区切られています。Textarea(Redactor)の行数を制限する方法は?
私はテキスト内の改行の数に基づいて行数を決定し、計算に観察を持っており、それが正しい値を返すされています。私のredactorの設定で
self.numberOfRows = ko.computed(function() {
return self.value().split(/<br>/).length;
}, this);
を私は比較keydownCallback機能を持っています
keydownCallback: function (e) {
if (e.keyCode > 48 || e.keyCode === 32) {
if (self.remainingCharacters() <= 0) {
e.preventDefault();
}
} else if (e.keyCode === 13) {
if (self.maxRows != null) {
if (self.numberOfRows() >= self.maxRows) {
e.preventDefault();
}
}
}
},
コールバック関数の最初の部分は、文字の数を制限している:最大に達するか超えたとき防ぐ必要があり、行の最大数までの行数は、新しい行を作成するから、キーを入力します働くp roperlyしかし、Enterキーはまだ新しい行を作成します。私はまた、 "偽を返す"試みた。 preventDefaultの代わりに、私もpreventDefaultの前にstopPropagationを試しましたが、運はありません。私はテキストエリアに値を貼り付けるユーザーは心配していません。また、単語の折り返しを心配していません。提案?
分離コールバック:
enterCallback: function(e) {
if (self.maxRows != null) {
if (self.numberOfRows() >= self.maxRows) {
return false;
}
}
},
keydownCallback: function (e) {
if (e.keyCode > 48 || e.keyCode === 32) {
if (self.remainingCharacters() <= 0) {
e.preventDefault();
}
}
},
はすぐに戻って呼び出すと、まだ最大行に達するか上回ったときに新しい行を入力する入力して使用して、別々のコールバックに分離しました。 Enterコールバックのif文は正しく実行されます。私はエンターキーを押して最大行に達したときにコンソールにメッセージを表示することができました。 –