我创建了一个简单的 javascript 文件并将其放在 web-app/js 中并将其命名为 util.js
它包含以下代码:
$(document).ready(function() {
// adds a space after 3rd digit/letter of postal code
$('#postalCode').keyup(function() {
var postalCodeValue = this.value;
var postalCodeLength = postalCodeValue.length;
if(postalCodeLength == 3){
this.value = postalCodeValue + " ";
}
});
});
这是非常简单的代码,我将它附加在 main.gsp 上,这样我就不必每次都继续导入它。
...
<div class="footer" role="contentinfo"></div>
<div id="spinner" class="spinner" style="display:none;">
<g:message code="spinner.alt" default="Loading…" /></div>
<g:javascript library="application" />
<g:javascript library="util" />
<r:layoutResources />
...
现在,有两种形式使用它(Form1 和 Form2)。它们属于不同的 gsp 文件。Form1 和 Form2 都有一个具有相同 ID“#postalCode”的文本字段。
<g:textField name="postalCode" maxlength="7" id="postalCode" pattern="([A-Z]|[a-z])[0-9]([A-Z]|[a-z]) [0-9]([A-Z]|[a-z])[0-9]" required="" value="${fosterHomeInstance?.postalCode}"/>
问题是,util.js 适用于 Form1,但奇怪的是,它不适用于 Form2。鉴于它们具有相同的 id,并将代码<g:javascript library="util" />
放在 main.gsp 中,那么理论上它们应该可以正常工作吗?嗯..这很奇怪。我右键Form2查看源码,util.js肯定有。我真的想不出它不应该起作用的原因。我希望它适用于两种形式,因为我不想重新重写相同的代码。
PS:我尝试将 id 更改为 class = "postalCode" 并将 $('#postalCode')... 更改为 $('.postalCode') 但仍然无效。我还在邮政编码文本字段上添加了一个 onClick 触发器,单击时会出现警报(其代码来自 util.js),以测试是否正在读取 util.js,它有效,但仍然无法解决问题。我很困惑。我可以简单地将它重写为 onKeyUp 并添加一个旧 javascript 时尚的函数,但我可能在这里遗漏了一些东西,所以我想先听听你们的意见。:'(