<s:iterator value="%{list}" status="admin" id="listss">
       <s:form action="upTypeCardType.action" name="updateform%{#listss[0]}" onsubmit="return check_submit('form1')">
         <s:hidden name="cardID" value=""></s:hidden>
<tr>
<td height="25" align="center">
<s:textfield name="cardName" id="cardname" value="%{#listss[1]}" onblur="checkcardname('updateform%{#listss[0]')"></s:textfield> 
&nbsp;
<div id="cardname_div%{#listss[0]}" style="position: absolute;padding-top:8px;" mce_style="position: absolute;padding-top:8px;"></div>
</td>
<td align="center">
<input type="button" value="修改" onclick="upcheck('%{#listss[0]}','%{#listss[1]}')">
</td>
<td align="center">
<input type="button" value="删除" onclick="deletetype('<s:property value="%{#listss[0]}"/>')">
</td>
</tr>
</s:form>
</s:iterator>
上面的循环中,form的名字能取到updateform1,updateform2.。。updateformn,onblur中传递的参数为什么一直是updateform%{#listss[0]。如果我想象取表单值一样获取updateform+%{#listss[0]的值,应该怎么写呢。还有,在struts2中,到底能不能用el表达式

解决方案 »

  1.   

    <s:iterator value="%{list}" status="admin" id="listss"> 
    改为:<s:iterator value="list" status="admin" id="listss"> 看看
      

  2.   

    一样的效果,  function checkcardname(formname){  
      alert("formname:"+formname);
    }这里弹出的值还是updateform%{#listss[0]。
      

  3.   

    <input type="button" value="修改" onclick="upcheck('updateform<s:property value="%{#listss[0]}"/>')"> 
      

  4.   

    问题解决了, js代码:
    <script language="JavaScript">
      var forlook;
      function checkcardname(formname){
        var forlook="cardname_div"+formname;
        var cardname = eval("document.all."+formname).cardName.value;
        if(cardname!=""){
           loadXMLDoc("checknameCardType.action?cardName="+cardname,checkReturn);
           return checkReturn(formname);  
        }else{
            if(cardname==""||cardname.length<1){
                if(formname=="form2"){   
                  document.getElementById("cardname_div2").innerHTML="<font color=red>请输入名字!</font>"; 
                }else{   
                  document.getElementById(forlook).innerHTML="<font color=red>请输入名字!</font>"; 
                }
             return false;  
            }  
        }   
      }   
      function checkReturn(formname){ 
      var forlook="cardname_div"+formname;
         if(req.readyState==4){ 
            if(req.status==200){  
                /*Ajax请求完成*/  
                var result = req.responseText;   
                if(result==0){
                  if(formname=="form2"){   
                    document.getElementById("cardname_div2").innerHTML="<font color='red'>该名字已使用</font>";   
                   }else{ 
                    document.getElementById(forlook).innerHTML="<font color='red'>该名字已使用</font>";   
                   }
                   if(formname=="form2"){
                    document.form2.cardName.focus();
                   }else{
                    return false;   
                   }
                   return false;   
                }else{
                    if(formname=="form2"){    
                     document.getElementById("cardname_div2").innerHTML="<font color=red>名字可用</font>"; 
                    }else{
                     document.getElementById(forlook).innerHTML="<font color='red'>该名字可用</font>";   
                    }  
                    return true;   
                }   
            }      
        }   
      } 
     //验证表单提交   
     function check_submit(formname){   
       if(checkcardname(formname)){   
            return true;   
       }else{   
         return false;   
       }   
     }
     function changeaction(formname){
       if(checkcardname(formname)){
         eval("document.all."+formname).action="addTypeCardType.action";
         eval("document.all."+formname).submit();
       }else{
        return false;
       }
     }
     //修改时验证
      function upcheck(formname){
       if(checkcardname(formname)){
         eval("document.all."+formname).action="upTypeCardType.action";
         eval("document.all."+formname).submit();
       }else{
        return false;
       }
     }
     function deletetype(delid,formname){
    if(!confirm("与该卡类相关的信息也将被伤处,您确定要删除吗?")){
       return false;}else{
       eval("document.all."+formname).cardID.value=delid;
       eval("document.all."+formname).action="delTypeCardType.action";
       eval("document.all."+formname).submit();
    }
     }
    </script>
      

  5.   

    jsp页面:
    <s:iterator value="list" status="admin" id="listss">
           <s:form action="upTypeCardType.action" name="updateform%{#listss[0]}" onsubmit="return check_submit('form1')">
             <s:hidden name="cardID" value="%{#listss[0]}"></s:hidden>
    <tr>
    <td height="25" align="center">
    <s:textfield name="cardName" id="cardname" value="%{#listss[1]}" onblur="checkcardname('updateform%{#listss[0]}')"></s:textfield> 
    &nbsp;
    <div id="cardname_divupdateform<s:property value="%{#listss[0]}"/>" style="position: absolute;padding-top:8px;" mce_style="position: absolute;padding-top:8px;"></div>
    </td>
    <td align="center">
    <input type="button" value="修改" onclick="upcheck('updateform<s:property value="%{#listss[0]}"/>')">
    </td>
    <td align="center">
    <input type="button" value="删除" onclick="deletetype('<s:property value="%{#listss[0]}"/>','updateform<s:property value="%{#listss[0]}"/>')">
    </td>
    </tr>
    </s:form>
    </s:iterator>
    </table>
    <s:form name="form2">
    <table width="800" border="1" cellpadding="1" cellspacing="0" class="tr1">
    <tr>
    <td height="25" align="center">
    卡类名:<input type="text" name="cardName" onblur="checkcardname('form2')"> 
    &nbsp;
    <div id="cardname_div2" style="position: absolute;padding-top:8px;" mce_style="position: absolute;padding-top:8px;"></div>
    </td>
    </tr>
    <tr class="tablelist">
    <th height="20" align="center"  width="38%">
    <input type="button" value="增加" onclick="changeaction('form2')">
    </th>
    </tr>
    </table>
    </s:form>