2012-11-18 69 views
0

我有一個invoice.jsp頁面,我必須使用jQuery在文本框中計算一些值。無法使用jQuery獲取textfield值

在我的發票中有一個數量文本框。如果用戶輸入數量,則計算出的價格應該動態計算,即(total_subPrice= unit_price * quantity),並在另一個稱爲「價格」的文本框中顯示。

現在我的電流輸出是這樣的: enter image description here

我嘗試下面的代碼來解決這個問題,但我的jQuery代碼是無法獲得unitprice文本字段的數據。我不知道爲什麼。請檢查我的代碼,併爲我提供一個解決方案。

invoice.jsp

-------------------- 
-------------------- 
<script type="text/javascript"> 
    $(document).ready(function(){ 
    $(function() { 
     $('input[name^="quantity"]').change(function() { 
     var unitprice = $(this).siblings('input[name^="unitprice"]').val(); 
     alert("Unit price check="+unitprice); 
     //problem in this line. Unable to get the unit price 
     $(this).siblings('input[name^="price"]').val($(this).val() * unitprice); 
     }); 
    }); 
    }); 
</script> 
.............................. 
.............................. 
<!-- 
    Here I am iterating through a list from my dabase using strus2 framework tags. 
    And defined my input field values in struts2 tag eg. `<s:textfield.../>` 
    is the same as `<input type="text".../> 
--> 
<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="%{quantity}" size="2" /> 
     </td> 
     <td width="15%" align="center"> 
     <s:textfield value="%{price}" name="" size="6"></s:textfield> 
     </td> 
    </tr> 
    </s:iterator> 
</table> 
................................ 
................................ 

當我在我的文本框的數量,我的警告框顯示「單價檢查=未定義」改變任何價值。請檢查我的代碼並提出任何解決方案。

更新:生成的HTML

inside loop { 
    <tr style="height: 10px;"> 
    <td width="65%" align="left">book title display</td> 
    <td width="10%" align="left"> 
     <input type="text" name="unitprice" value="%{price}" size="4"/> 
    </td> 
    <td width="10%" align="center"> 
     <input type="text" name="quantity" value="%{quantity}" size="2" /> 
    </td> 
    <td width="15%" align="center"> 
     <input type="text" value="%{price}" name="" size="6"></s:textfield> 
    </td> 
    </tr> 
+1

什麼是生成html? – Ibu

+0

@Ibu我更新檢查我的上述代碼再次在**更新:生成HTML ** –

回答

1

我得到它的工作:http://jsbin.com/efinak/2/edit

$(function() { 
    $('input[name="quantity"]').change(function() { 
     var unitprice = $(this).parents('tr').find('input[name="unitprice"]').val(); 
     $(this).parents('tr').find(' input[name="price"]').val($(this).val() * unitprice); 

    }); 
}); 
+0

如你所建​​議的。如果我正在申請我的代碼,那麼它會影響我的所有項目。即如果我更改了一件物品的數量,那麼它也會影響我發票上的所有物品。我只想把價格反映到那些數量並非全部變化的物品上。我們應該怎麼做? –

+0

是的,我剛剛檢查,請等待工作。 – Jai

+0

謝謝你。我也在這裏嘗試 –