未捕获的 ReferenceError:未定义验证(jQuery 验证)

Posted

技术标签:

【中文标题】未捕获的 ReferenceError:未定义验证(jQuery 验证)【英文标题】:Uncaught ReferenceError: validate is not defined (jQuery validation) 【发布时间】:2015-01-18 03:37:57 【问题描述】:

我收到此错误,脚本似乎永远无法正常工作。

Uncaught ReferenceError: validate is not defined

我还尝试从 中调用 onsubmit 函数,并尝试将函数放在页面内和单独的 JS 文件中,但结果相同。 html文件:show.gsp

<body>

<div class="row">
    <div class="col-md-9 col-sm-9">
        <g:form class="form-inline" role="form" action="update" name="form" >
            <div class="form-group has-feedback">
                <label class="control-label" for="mcc">GSM.Identity.MCC</label>
                <br/>
                <input type="text" class="form-control required" name="mcc" id="mcc" value="$mcc">
                <span class="glyphicon form-control-feedback"></span>
            </div>
            <br/>
            <br/>

            <div class="form-group has-feedback">
                <label class="control-label" for="mnc">GSM.Identity.MNC</label>
                <br/>
                <input type="text" class="form-control required" name="mnc" id="mnc" value="$mnc">
                <span class="glyphicon form-control-feedback"></span>
            </div>
            <br/>
            <br/>

            <div class="form-group has-feedback">
                <label class="control-label" for="co">GSM.Radio.CO</label>
                <br/>
                <input type="text" class="form-control required" name="co" id="co" value="$co">
                <span class="glyphicon form-control-feedback"></span>
            </div>
            <br/>
            <br/>
            <p>
                <button type="submit" class="btn btn-success btn-sm" id="submit" onclick="validate()">Save Settings</button>
                <g:link action="restart" class="btn btn-danger btn-sm">Restart OpenBts</g:link>
            </p>
        </g:form>
    </div>
</div>

</body>
<script src="$resource(dir:'js', file:'main_script.js') "></script>

和脚本:main_script.js

//validation script
function validate()

    console.log("test");

    var mcc = $("#mcc").val();
    var mnc = $("#mnc").val();
    var co = $("#co").val();

    if (!$.isNumeric(mcc))
        $("#mcc").parent("div").removeClass("has-feedback has-error has-success").addClass("has-error");
    
    if (!$.isNumeric(mnc))
        $("#mnc").parent("div").removeClass("has-feedback has-error has-success").addClass("has-error");
    
    if (!$.isNumeric(co))
        $("#co").parent("div").removeClass("has-feedback has-error has-success").addClass("has-error");
    

【问题讨论】:

&lt;script src="$resource(dir:'js', file:'main_script.js') "&gt;&lt;/script&gt; 这一行应该在&lt;/body&gt; 标签之前 确实有效,但我很难理解为什么,它不应该只在正文之后起作用,因为它在同一页面中。 哦,我有一个语法错误,所以我修复了它。但这不是问题,所以再次感谢您。也许你想把它作为答案? 我会回答的。脚本必须在 &lt;body&gt; 标签或 &lt;head&gt; 中加载 【参考方案1】:

javascript 必须在 &lt;head&gt;&lt;body&gt; 标记内加载。

您在&lt;/body&gt; 标记之后添加了脚本标记,这就是为什么它没有被加载并且按钮事件找不到该Javascript 中的validate() 函数

&lt;/body&gt;标签前添加如下,

    .
    .
    .
            </g:form>
           </div>
         </div>

    <script src="$resource(dir:'js', file:'main_script.js') "></script>
   </body>

正如This Link所说,它应该在&lt;body&gt;标签中使用

【讨论】:

以上是关于未捕获的 ReferenceError:未定义验证(jQuery 验证)的主要内容,如果未能解决你的问题,请参考以下文章

打字稿 - 未捕获的 ReferenceError:未定义导出

未捕获的 ReferenceError:未定义 showCategory

未捕获的 ReferenceError:“$ 未定义”[重复]

PhoneGap 错误 - “未捕获的 ReferenceError:cordova 未定义”

未捕获的 ReferenceError:$ 未定义 [重复]

未捕获的 ReferenceError:未定义窗口