请找到以下代码:
setTimeout(function() {
var objTextareaText = objTextArea.innerText;
var normalizedText = objTextareaText;
if (!countSpacesAsChars) {
normalizedText = objTextareaText.replace(/\s/g,"").replace(/ /g, "");}
strText = normalizedText.replace(/(\r\n|\n|\r)/gm, "").replace(/ /gi, " ");
//Strip Html tags
strText = normalizedText.replace(/(<([^>]+)>)/ig,"").replace(/^([\t\r\n]*)$/, "");
}, 50);
if (strText.length >= MaxLength) {
}
从上面的 if 语句 strText 返回未定义。
此外,如果我在 settimeout 函数中包含 if 语句,如下所示:
setTimeout(function() {
var objTextareaText = objTextArea.innerText;
var normalizedText = objTextareaText;
if (!countSpacesAsChars) {
normalizedText = objTextareaText.replace(/\s/g, "").replace(/ /g, "");
}
strText = normalizedText.replace(/(\r\n|\n|\r)/gm, "").replace(/ /gi, " ");
//Strip Html tags
strText = normalizedText.replace(/(<([^>]+)>)/ig,"").replace(/^([\t\r\n]*)$/, "");
if ((e.data.domEvent.$.keyCode === 8) || (e.data.domEvent.$.keyCode === 46) || ((e.data.domEvent.$.shiftKey)
&& (e.data.domEvent.$.keyCode === 36)) || ((e.data.domEvent.$.shiftKey) && (e.data.domEvent.$.keyCode === 35))
|| (e.data.domEvent.$.keyCode === 35) || (e.data.domEvent.$.keyCode === 36) || (e.data.domEvent.$.keyCode === 37)
|| (e.data.domEvent.$.keyCode === 38) || (e.data.domEvent.$.keyCode === 39) || (e.data.domEvent.$.keyCode === 40)) {
showCharacterCount();
e.cancelBubble = false;
e.returnValue = true;
return true;
}
// Reaches Max Length - Shows error MAX_VALUE Reached Error Msg.
if (strText.length >= MaxLength) {
showCharacterCount();
e.cancelBubble = true;
e.returnValue = false;
e.cancel();
e.stop();
return false;
} else {
showCharacterCount(strText);
e.cancelBubble = false;
e.returnValue = true;
return true;
}
}, 50);
通过上述方式,关键事件存在问题。
e.cancelBubble = true;
e.returnValue = false;
e.cancel();
e.stop();
return false;
这些代码将不起作用。
所以请提出一个解决方案。请注意:当我从 salesforce 中的 RTF 获取字符数时,应该使用 Settimeout 函数。