我目前很難得到輸入鍵,以達到最大行數後,停止在我的textarea中創建新行。行數作爲參數傳遞到我所做的組件中。我的textarea是一個Redactor編輯器,新行被換行符隔開。如何限制Textarea(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粗略地說,然而輸入鍵仍然會創建新的行。我也嘗試過「返回假」;而不是preventDefault,並且我也在preventDefault之前嘗試過stopPropagation,但沒有運氣。我不關心用戶粘貼到textarea的值,也不關心單詞換行。建議?
分居回調:
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();
}
}
},
分離成單獨的回調,使用輸入現在再打,仍然進入時最大的行達到或超過新的生產線。輸入回調中的if語句被正確執行。當我按下回車鍵並達到最大行數時,我能夠在控制檯中顯示一條消息。 –