未捕获的ReferenceError:未定义limitText


仅从匹配结果的数量来看,我看到许多其他人都遇到了这个问题-尽管解决方案是逐案运行的。

基本上,这是一个告诉您在键入时还剩下多少个字符的功能-“您还有XXX个字符”。

Javascript:

"use strict"; // <-- This was a suggested remedy, did nothing.
function limitText(limitField, limitCount, limitNum) {
    if (limitField.value.length > limitNum) {
        limitField.value = limitField.value.substring(0, limitNum);
    } else {
        limitCount.value = limitNum - limitField.value.length;
    }
}


HTML(省略了不相关的PHP):

<textarea name="BlogPost" maxlength="5000" cols="100" rows="20"
onKeyDown="limitText(this.form.BlogPost,this.form.countdown,5000);"
      onKeyUp="limitText(this.form.BlogPost,this.form.countdown,5000);" required></textarea>
   <font size="1">(Maximum characters: 5000)<br>
   You have <input readonly type="text" name="countdown" size="3" value="5000">
   characters left.</font>


将我的浏览器置于“调试模式”实际上会导致脚本正常工作-尽管我确实不能期望任何运行该应用程序的用户都能执行此操作。如果使用<script></script>将脚本直接放置到文档中,它也可以工作,尽管我正在使用的系统指出这是“不好的做法”,因为您期望通过其精美的模块系统加载脚本。 (MediaWiki)

有任何想法吗?

最佳答案

onKeyDownonKeyUp的第一次迭代(您错过了表单元素)– http://jsfiddle.net/3ZAeP/



(function (global) {
    global.limitText = limitText;
    function limitText(limitField, limitCount, limitNum) {
        if (limitField.value.length > limitNum) {
            limitField.value = limitField.value.substring(0, limitNum);
        } else {
            limitCount.value = limitNum - limitField.value.length;
        }
    }
}(window));


有趣的是limitText应该是全局的。

09-27 03:54