2

可能重复:
无法使用 jQuery 获取文本字段值

当用户更改文本字段中的项目数量时,我正在尝试更改输入字段。在这里,我从我的数据库中遍历我的列表。现在我必须为客户开具发票。

在我的代码中,如果我要更改单个项目的数量,那么它会影响列表中的所有其他项目。我只想更改数量已更改的特定项目。

下面的代码给了我一个错误。它会在单次更改项目数量时更改所有项目的价值。

我的代码:(新更新)

          <script type="text/javascript">
             $(document).ready(function(){  
                $(function() {        
                   $('input[name="quantity"]').change(function() {
                    var $tr = $(this).closest("tr");
                    var unitprice = $tr.find('input[name^="unitprice"]').val();  
                    $tr.find('input[name^="price"]').val($(this).val() * unitprice);
                }); 
                var totalPrice = 0;
                $('input[name="price"]').each(function(){
                    totalPrice += parseFloat(this.value);
                    $('[name=subtotal]').val(totalPrice);
                });
            }); 
        }); 
        </script>
         ..................
         ..................
         <tr>
            <td height="65%" valign="top" width="100%"> 
                <table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
                    <s:iterator  value="#session.BOK" status="userStatus">
                        <tr style="height: 10px;"> 
                            <td width="65%" align="left"><s:property value="bookTitile"/></td> 
                            <td width="10%" align="left"><s:textfield name="unitprice" value="%{price}" size="4"/></td>
                            <td width="10%" align="center"><s:textfield name="quantity" value="1" size="2"/></td>  
                            <td width="15%" align="center"><s:textfield name="price" value="%{price}" size="6"></s:textfield> </td>
                        </tr> 
                    </s:iterator>  
                </table>   
                </td>
            </tr> 
              <tr>
                   <td height="1%" valign="top" width="100%"> 
                          <table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
                                       <tr style="height: 10px;"> 
                                           <td width="100%" align="right" colspan="5">   
                                                <s:textfield name="subtotal"  size="5"> </s:textfield>
                                          </td>
                                       </tr> 
                           </table>  
                 </td>
          </tr>

输出如下图所示:

在此处输入图像描述

4

1 回答 1

2

Try this instead

<script type="text/javascript">
    $(function() {        
        $('input[name="quantity"]').change(function() {
            var $tr = $(this).closest("tr");
            var unitprice = $tr.find('input[name^="unitprice"]').val();  
            $tr.find('input[name^="price"]').val($(this).val() * unitprice);
        });
    });
</script>

Update : This the function that will return the total caculated price. Use it as per need.

function calculateBasket() {
    var totalPrice = 0;
    $('input[name="price"]').each(function(){
        totalPrice += parseFloat(this.value);
    });

    return totalPrice;
}
于 2012-11-18T10:57:53.250 回答