Gils文件中的Javascript在Grails 3

时间:2016-08-05 22:42:42

标签: javascript forms grails gsp

我已经承担了将项目从Grails 2升级到Grails 3的艰难过程。到目前为止,我已经完好无损地活了下来,但我遇到了一个非常神秘的障碍:在Grails 2版本上完美运行的Javascript似乎在Grails 3版本中完全忽略了。

示例:我有一个页面,其中包含一个字段,在提交表单之前需要填写该字段。下面是整个页面的代码 - 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();
    }
});

在Grails 2中,这可以按预期工作 - 页面将在提交表单之前验证是否已进行选择。但是在Grails 3中,nada - 即使用户没有选择任何内容,表单也会被提交并且系统会移动到下一页。我在编译后检查了源代码并且JS就在那里,所以我不确定它为什么会被忽略。有什么想法吗?

一些额外的上下文:我也将JQuery从1.8.0升级到2.2.0,将Bootstrap从2.0.x升级到3.3.6。

0 个答案:

没有答案