确切的说应该是DWR的问题!用dwr做页面数据的修改,页面如下:
  <s:iterator id="us" value="xxList">  <input id="a" type="text" value="<s:property value="#us.xxxx" />" onblur="invoke(this)"/>  </s:iterator>
这样子就能把文本框的值传到JS中。
现在改成这样:
  <s:iterator id="us" value="xxList">  <input id="a" type="text" value="<s:property value="#us.xxxx" />"/> <img src="xxx.jpg" onclick="invoke();" />
  </s:iterator>
需求是:当点击图片时,将文本框的值传到JS中。应该怎么做?PS:文本框要迭代,所以JS无法使用$("a").value 来获取文本框的值。

解决方案 »

  1.   

      这好说啊  你能获取 <s:property value="#us.xxxx" /> 给<input type="text" />
     就不能把值给 <img  onclick="invoke(<s:property value='#us.xxx' >)"/> 把你的 invoke 方法  加一个参数啊 就搞定    试试 不行再找我 !!
     
      

  2.   

    document.getElementbyId('a').value 
      

  3.   


    我没说清楚, 你看一下上面那个做法, <s:property value='#us.xxx' > 只是显示在文本框里的值,我要传的不是这个值,而是我要在文本框修改,然后点击图片,把修改后的值传到JS里。
      

  4.   


    不行,因为有 <s:iterator 循环
      

  5.   


    我要传的不是<s:property value='#us.xxx' >这个值, 这个值是显示在文本框里的,然后我对这个值修改后点击后面的图片,把修改后的值穿到JS。 
      

  6.   

    lz试试这个: 
    <s:iterator id="us" value="xxList">
      <input id="<s:property value="#us.xxxx" />" type="text"            value="<s:property value="#us.xxxx" />"/>                                     <img    src="xxx.jpg" onclick="invoke(<s:property value="#us.xxxx" />"/);" />
      </s:iterator>
    document.getElementbyId("invoke传的参").value要求:xxlist内的值不能重!
      

  7.   

    迭代时文本框id不要用固定值就行了    <s:iterator id="us" value="xxList" index = "i">  <input id="a${i}" type="text" value="<s:property value="#us.xxxx" />"/> <img src="xxx.jpg" onclick="invoke('a${i}');" />
      </s:iterator>
    JS通过所传参数中的id去得到对应文本框的值,希望对你有帮助。
      

  8.   

    那你在迭代的时候可以给他个变量啊。
    <s:iterator id="us" value="xxList" status="u">
      <input id="a${u}" type="text" value="<s:property value="#us.xxxx" />"/> <img src="xxx.jpg" onclick="invoke(document.getElementbyId('a${u}').value);" />
      </s:iterator>
    试试这样看看。不过我好久没有写过了,好像是这样
    只要input 的ID是唯一的就可以找到了啊。
      

  9.   

    <s:iterator id="us" value="xxList">  <input id="a%{#xxList.index}" type="text" value="<s:property value="#us.xxxx" />"/> <img src="xxx.jpg" onclick="invoke(a%{#xxList.index}');" />
      </s:iterator>
      

  10.   


    这样是可以把ID传进去,但是JS里面要怎么获取文本框值呢?
    这样传来的ID是个变量。
    但是getElementById("")里面放的是一个常量。这样根本取不了啊!
      

  11.   


    这样子传过去的是一个变量哦,好吧,我写出来:function invoke(date){    getElementById("date").value;
    }这么做它就根据id是“date”去找了……  话说这个方法是不能用变量来找的额!
      

  12.   

    引用 13 楼 plutowang 的回复:
    迭代时文本框id不要用固定值就行了
    HTML code
    <s:iterator id="us" value="xxList" index = "i"><input id="a${i}" type="text" value="<s:property value="#us.xxxx" />"/> <img src="xxx.jpg" onclick="invok(a${i})"这样是可以把ID传进去,但是JS里面要怎么获取文本框值呢?
    这样传来的ID是个变量。
    但是getElementById("")里面放的是一个常量。这样根本取不了啊!!!!   invok(a${i})不把值给传过去了吗,你直接function invok(a){
    document.getElementById(a); 就不行了吗
    }
      

  13.   


    那个index=“i”是什么意思呀? 这样那个i就可以自动递增了吗? 没见过这种用法啊……
      

  14.   

    13 楼的思路是对的,不过要用status属性
    <s:iterator id="us" value="xxList" status= "st">
      <input id="a<s:property vlaue='#st.index'/>" type="text" value="<s:property value="#us.xxxx" />"/> <img src="xxx.jpg" onclick="invoke('a<s:property vlaue='#st.index'/>');" />
      </s:iterator>这样就可以在就可以实现单击图片的时候能将对应的文本框的Id传过去
      

  15.   


    嗯~这样可以,不过把文本框换成<s:select就不行了,<s:select 的id属性不支持变量呀,有什么办法解决吗?
      

  16.   

    <% int i=0; %>
    id="a<%=i+1>}"
    onclick="invoke('a<%=i+1>}');" 
      

  17.   


    如果用下拉框的话,
    <s:select的id值是不编译的,也就是说你的id=“a<%=i+1>”,那在源文件里id就是原样输出a<%=i+1>,而不是a0,懂我意思吗?  这个有什么方法解决吗?
      

  18.   

    下拉框 :有几个下拉列表啊?
    要是只用一个的话你就select 的id=“a”就不行了吗,里面的option也不用取id啊?
      

  19.   

     
    我说的是id用变量啊,你还没理解,你可以自己做一下,我用struts标签,没有option的, 就像这样: <s:iterator id="us" value="xxList" index=“st”>  <s:select id="a<s:property vlaue='#st.index'/>" list="XXX" listKey=“XXX” listValue=“XXX”></select>
    <img src="xxx.jpg" onclick="invoke();" />  </s:iterator>如果用文本框的话,id循环出来就会是id=“a0”,id=“a1”,id=“a2” ……   ,这样就没问题了
    可是用这个下拉框(上面的例子),id循环出来却全是:
    id=“a<s:property vlaue='#st.index'/>”,也就是原样输出,所以我在想除了id用变量还有什么办法。
      

  20.   

    如果ID没有重复,可以在image的onclick方法中把对应的ID作为参数传入,用getElementById取得。如果ID不能唯一确认,用一个div或者span把输入框和图片包起来,然后用event.srcElement.parent.get("XXXX").value所有ID做成一样的名字,这样后台取得也方便