0

これをレコードラインに使用するテンプレートがあります

<input type="${inputType}" name="${variableName}.code" id="${variable}.${vnum}.${answer.code}" class="checkbox" value="${answer.code}"
             [#nested/] [#if (answer.textLength > 0) && scripting]onchange="showOtherBox( this, '${variable}.[#if descriptionHack]${variableNumber}[#else]${vnum}[/#if].${answer.code}.description' )"[/#if]
             [#if showValues && (existing == answer.code)]checked="checked"[/#if]/>

IE8では、次のようにレンダリングされます

<span class="field">
<INPUT id=responses.8.L class=checkbox value=L type=checkbox name="responses['8'].answers['L'].code"> 
<LABEL for=responses.8.L>Award(s) for special accomplishment or performance related to activity participation (please list)</LABEL> 
<TEXTAREA id=responses.8.L.description class=" visible" rows=4 cols=60 name="responses['8'].answers['L'].description"></TEXTAREA> 
</span>

私たちが試した他のすべてのブラウザでは、次のようにレンダリングされます

<span class="field">
<input type="checkbox" name="responses['8'].answers['L'].code" id="responses.8.L" class="checkbox" value="L" onchange="showOtherBox( this, 'responses.8.L.description' )">
<label for="responses.8.L">Award(s) for special accomplishment or performance related to activity participation (please list)</label>
<textarea rows="4" cols="60" name="responses['8'].answers['L'].description" id="responses.8.L.description" class="visible" classname="visible"></textarea>
</span>

違いは、FTLスクリプトのifステートメントです。

[#if (answer.textLength > 0) && scripting]

IEを除くすべてに当てはまります。IE8では、何らかの理由でfalseであるため、入力タグにOnChangejavascriptイベントを配置しません。誰かが以前にこのようなものを見たことがありますか?Freemarker2.3.9を使用しています

更新、IE8の互換モードをオンにするとちょっと動作します。しかし、正確ではありません。これを行うと、チェックボックスがフォーカスを失うまでonchangeイベントは発生しません。これは他のすべてとは大きく異なります。あまり問題なくこれを修正する簡単な方法はありますか?ie8の場合、onchangeの代わりにonclickを挿入するという何かを入れることができると思います。それはうまくいくかもしれませんが、私はそれをそのように修正するためにクライアントからの許可が必要になります。

4

1 に答える 1

0

FreeMarker はサーバー上でのみ実行されるため、ブラウザの影響を直接受けることはありません。<!-- answer.textLength = ${answer.textLength}, scripting = ${scripting?string} -->) のようなものをその前に置く必要があり[#if]ます。これにより、条件が失敗した正確な理由を確認し、問題のある変数の値がどこから来ているかを確認できます。通常、それを設定するのは FreeMarker ではないためです。(ベアボーン FreeMarker は、ブラウザの種類を検出することさえできません。)

于 2012-09-06T21:35:25.950 に答える