kumapoです。なかじまんさん、動作確認と調査ありがとうございます!
遅レスですみません。
同じテンプレートを使うのはまだ試せていないのですが
formにidを指定した場合で動作確認してみました。
結論から言うと、firefoxがフォームの値を補完し
期待を裏切る動作になりました。
これは、formのid値に${hoge}を用いたためだと思います。
<div repeat="${hoges}" var="hoge" class="hoge">
<div class="first">
<img class="hoge_photo" src="${path+hoge.photo}"/>
<span class="hoge_id" value="${
hoge.id}"></span>
</div>
<div class="second">
<form id="form_${
hoge.id}">
<textarea></textarea>
<input type="hidden" class="hoge_id" value="$
{
hoge.id}" id="hidden_${
hoge.id}"/>
<input class="confirm" type="button">
</form>
</div>
</div>
* 結果 *
.first span.hoge_id=14
.second form の属性idの値=form_14
.second input.hoge_id の属性idの値 hidden_14
.second input.hoge_id の属性valueの値 34(期待と異なる値)
そのほか、input[type="hidden"]の属性valueの代わりに spanの属性valueを用いた場合は
常に期待どおりの動作となりました。
こちらの方法でなんとか アプリを修正できそうです。
On 2月9日, 午後8:48, なかじまん <
nakaji...@lrlab.to> wrote:
> kumapo さん。みなさん。理由が分かったのでお伝えします。
>
> (1) ページをはじめて表示したときは、テンプレート記述は、次のとおりです。
>
> <input type="hidden" class="hoge_id" value="${
hoge.id}"/>
>
> (2) テンプレートを適用すると、値が埋まります。
>
> <input type="hidden" class="hoge_id" value="1"/>
> <input type="hidden" class="hoge_id" value="2"/>
> <input type="hidden" class="hoge_id" value="3"/>
>
> (3) テンプレート記述は、そのまま1番目なので、ブラウザの更新ボタンをクリックすると、
> Firefox がフォームを記憶するため、value="${
hoge.id}" ではなく "1" となる。
>
> <input type="hidden" class="hoge_id" value="1"/>
>
> (4) このままテンプレートを適用すると、すべて "1" となる。
>
> 試していないのですが、次の方法で回避できるかもしれません。
>
> 同じテンプレートを繰り返し使う
http://code.google.com/p/opensocial-jquery/wiki/Template