QA@IT

<logic:iterate>内にて<html:text>のindexed属性をtrueに設定したときに、javascriptでループさせる方法

7260 PV

いつもお世話になっております。

strutsのlogic:iterateタグ内にてhtml:textタグのindexed属性をtrueに設定したときに、
生成物のhtmlにおいて、javascriptによるうまいループ方法はありますでしょうか?
もしくはセオリーのような書き方があれば、ぜひ教えていただければ幸いです。
フロントエンド側で簡易入力値チェックを実施したいと考えております。
むりくりの妥協案はありますが、もう少しスマートに書ければ、と思っています。
(イテレートの最大値がわかれば万事解決?)
以上、よろしくお願いいたします。

<JSP>

<logic:iterate id="bean" name="key">
    <html:text name="bean" property="val" indexed="true" />
</logic:iterate>

<生成されるhtml>

<input type="text" name="bean[0].val" value="aaa">
<input type="text" name="bean[1].val" value="bbb">
<input type="text" name="bean[2].val" value="ccc">

<javascriptによるむりくり妥協案ループ>

var count = 0;
while( true ){
    try{
        var v = document.forms[0].elements["bean["+count+"].val"].value;
        //以下、入力チェック等実施
        count++;
    }catch(e){
        break;
    }
}

-------参考:indexed属性を設定しない場合(バックエンドの煩雑さを考慮して不採用)--------
<JSP>

<logic:iterate id="bean" name="key">
    <html:text name="bean" property="val" />
</logic:iterate>

<生成されるhtml>

<input type="text" name="val" value="aaa">
<input type="text" name="val" value="bbb">
<input type="text" name="val" value="ccc">

<javascriptによるfor文ループ>

for(var i=0; i<document.forms[0].val.length ; i++){
    var v = document.forms[0].val[i].value;
    //以下、入力チェック等実施
}
ウォッチ

この質問への回答やコメントをメールでお知らせします。