日期:2014-05-16  浏览次数:20767 次

使用了<s:iterator>标签循环生成的input块,怎么取到某一个特定块的值呢.
<s:iterator value="#session.cartList" id="cartList">
    <input type="hidden" name="goodsId" value=${cartList.goodsId }/>
    <!-- 数量 -->
    <td><input id="goodsNumInCart" name="goodsNumInCart" onblur="numUpdate()"/></td>
</s:iterator>

如上面已被简化的代码所示,我使用了一个 onblur="numUpdate()" 来检测控件内数字的变化,一旦内容变化:
             1.这个函数就讲表单提交到后台(AJAX),后台有两个字段来接收,分别为int goodsId 和 int goodsNumInCart
             2.Action会根据id来判断到底是哪个货物的数量被更新。

问题: 怎样才能仅仅传送这一对goodsId和goodsNumInCart呢。因为当s:iterator 下有许多其他块时,其他的input id="goodsNumInCart"也被传递过去了.
SSHSTRUTS2?JAVA?AJAX

------解决方案--------------------
<s:iterator value="#session.cartList" id="cartList">
    <!-- 数量 -->
    <td><input type="hidden" name="goodsId" value=${cartList.goodsId }/><input id="goodsNumInCart" name="goodsNumInCart" onblur="numUpdate(this)"/></td>
</s:iterator>
<script>
    function numUpdate(goodsNumInCart) {
        var goodsId = goodsNumInCart.previousSibling.value;
        goodsNumInCart = goodsNumInCart.value;
        ///your ajax code
    }    
</script>