GSP文件中的Javascript在Grails3中被破坏

GSP文件中的Javascript在Grails3中被破坏,javascript,forms,grails,gsp,Javascript,Forms,Grails,Gsp,我已经完成了将一个项目从Grails2升级到Grails3的艰巨过程。到目前为止,我基本上完好无损地活了下来,但我遇到了一个相当神秘的障碍:在Grails2版本上完美工作的Javascript在Grails3版本中似乎被完全忽略了 示例:我有一个页面,其中有一个字段需要在提交表单之前填写。下面是整个页面的代码-javascript位于末尾: <head> <meta name="layout" content="main"> </head> <b

我已经完成了将一个项目从Grails2升级到Grails3的艰巨过程。到目前为止,我基本上完好无损地活了下来,但我遇到了一个相当神秘的障碍:在Grails2版本上完美工作的Javascript在Grails3版本中似乎被完全忽略了

示例:我有一个页面,其中有一个字段需要在提交表单之前填写。下面是整个页面的代码-javascript位于末尾:

<head>
    <meta name="layout" content="main">
</head>
<body>
    <g:render template="worksheet/nav"/>
    <div class="row-fluid">
        <div class="span12">
            <div id="errors" class="small alert alert-error" style="display:none"></div>
            <br/>
            <g:form class="form-horizontal" url="[action:'worksheet']" id="form" onsubmit="return validateForm()">    
                <fieldset>
                    <div class="control-group formSep">
                        <label class="control-label" for="moveType">
                            Client *
                        </label>
                        <div class="controls">
                            <g:select name="client" class="input-medium" from="${clients}" noSelection="['':'']" value="${map.client?.name}"/>    
                        </div>
                    </div>
                    <br/>
                    <div class="btn-toolbar">
                        <g:hiddenField name="_eventId" value="next"/>
                        <span class="pull-right">
                            <g:link event="skip" class="btn btn-large">Skip</g:link>
                            <button type="submit" class="btn btn-large btn-primary">Next</button>
                        </span>
                    </div>
                </fieldset>
            </g:form>
        </div>
    </div>
</body>
<g:javascript>
$("#form").on('submit', function() {
    $('#errors').html('');
    $('#errors').hide();
});
$("#form").validate({
    onfocusout: false,
    onkeyup: false,
    onclick: false,
    rules: {
        client: "required"
    },
    messages: {
        client: "Please select a client"
    },
    errorElement: "div",
    errorPlacement: function (error, element) {
        $('#errors').append(error);
        $('#errors').show();
    }
});
在Grails2中,这与预期的一样——页面将在提交表单之前验证所做的选择。但在Grails3中,nada——表单被提交,系统将进入下一页,即使用户没有选择任何内容。编译后我检查了源代码,JS也在那里,所以我不确定为什么会被忽略。有什么想法吗


一些额外的上下文:我还将JQuery从1.8.0升级到2.2.0,并将引导从2.0.x升级到3.3.6

你的脚本看起来不错,我想你忘记了stackoverflow,如果没有,这就是问题所在。否则,在从Grails 2迁移到Grails 3时,请确保在脚本之前导入JQuery,您可能已经更改了顺序,或者完全删除了它。如果一切正常,那么打开浏览器控制台(通常是CTRL-MAJ I),检查javascript/控制台web上是否存在任何错误。感谢您的回答。Javascript块在代码中被正确地关闭了,我不知道为什么SO没有显示它,而JQuery是第一个导入,所以我在这方面做得很好。我注意到Javascript控制台中有一个错误,我可以通过导入来修复这个错误。这确实解决了另一个JS问题,但是这个页面上的内联JS仍然被忽略。因此,系统在阅读哪一个JS方面是很挑剔的?没有道理。一些额外的上下文:我还将JQuery从1.8.0升级到2.2.0,并将引导从2.0.x升级到3.3.6。用于表单验证的JQuery插件是什么?我认为问题在于插件上的onsubmit=return validateForm:您更改了JQuery版本,可能与以前版本一起工作的东西不再工作了。是的,就是这样-我使用的是JQuery验证插件v1.10.0,已经有年历史了。目前的版本是1.15.1,我计划稍后测试——我试图一次升级太多的东西,需要在使用jQuery和Bootstrap之前完成Grails。