我正在尝试为CLEditor重新创建一个最大长度函数。这样做的目的是:如果一个文本被输入到一个文本框中,并且它的长度超过了设定的最大长度,那么这个文本框就会失去它的焦点,这样就不可能再写任何字母了。
到目前为止,我所实现的是,当文本长度超过我的最大长度时,CLEditor能够识别。对于失去焦点,我尝试了一个简单的返回(即return;return false;)和一些.blur()-methods (即$(frameDesc).blur();和cledDesc.$area.blur();)。但这些都不起作用。即使达到了最大长度,我仍然可以填充文本。
请看一下代码:
$("#profileForm_description").cleditor({width: 430, height: 125});
var cledDesc = $("#profileForm_description").cleditor()[0];
var frameDesc = cledDesc.$frame[0].contentWindow.document;
$(frameDesc).bind('keypress change', function(){
var text = textWithoutHTML(cledDesc.$area.val());
if(text.length >= 650){
console.log("Longer than MaxLength");
//lose focus
}else{
//Do something
}
});如有任何帮助和提示,我们将不胜感激:)
发布于 2011-09-08 14:24:00
解决了这个问题。这是相当棘手的。解决方案(对我来说)是:
使用keydown而不是keypress - event。
因此,如果我试图在我的文本框中输入一些文本,并且达到了最大长度,我就无法继续写作。但是为了能够删除一些文本,我也需要排除Backspace-键以避免被拒绝。所以我做了一个检查,如果按下的键是退格键。
下面是代码现在的样子:
$("#profileForm_description").cleditor({width: 430, height: 125});
var cledDesc = $("#profileForm_description").cleditor()[0];
var frameDesc = cledDesc.$frame[0].contentWindow.document;
$(frameDesc).bind('keydown change', function(event){
var text = textWithoutHTML(cledDesc.$area.val());
if(text.length >= 650 && event.which != 8){
console.log("Longer than MaxLength");
//lose focus / stop writing
return false;
}else{
//Do something
}
});发布于 2011-10-19 15:37:07
我已经添加了一些代码来使其工作。
这对我来说是完美的:
var cledDesc = $("#oodsummary").cleditor()[0];
var frameDesc = cledDesc.$frame[0].contentWindow.document;
var limit = 10;
$(frameDesc).bind('keydown', function(event){
cledDesc.updateTextArea();
var text = cledDesc.$area.val();
if(text.length >= limit &&
event.which != 8 && // back
event.which != 46 && // canc
event.which != 37 && // left
event.which != 38 && // up
event.which != 39 && // right
event.which != 16 && // shift
event.which != 20 && // caps lock
event.which != 91 && // os special
event.which != 18 // alt
) {
alert("Il testo inserito risulta essere troppo lungo.");
cledDesc.$area.val(text.substr(0, limit)).blur();
return false;
}else{
cledDesc.updateTextArea();
return true;
}
});https://stackoverflow.com/questions/7330740
复制相似问题