簡単な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 />
...
現在、それを使用する2つのフォーム(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の方法で関数を追加することもできますが、ここで何かが足りない可能性があるので、最初に皆さんからお話を伺いたいと思います。:'(