未捕获的ReferenceError:*函数此处*未定义

时间:2014-07-03 19:54:25

标签: javascript html mediawiki referenceerror

  

未捕获的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>

将我的浏览器置于&#34;调试模式&#34;实际上导致脚本无错误地工作 - 虽然我真的不能指望任何运行应用程序的用户也这样做。如果将脚本直接放在带有<script></script>的文档中,它也可以工作,尽管我正在使用的系统将其视为“不良实践”和“#34;因为您希望通过它的花哨模块系统加载脚本。 (Mediawiki的)

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

首次使用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应该是开箱即用的全球。