2012-03-30 56 views
0

問題があります。 Zendフレームワークに基づいたアプリケーションにはショッピングカート(表として示されています)があります。すべての行は、店のバスケットの商品です。すべての行には、2つのフォームフィールドがあります。数量と金額(=価格*数量)です。JavaScript複数入力onChange

1.入力がでforeachループに与えられている>私はJavaScriptを使用してonChangeイベントで数量(価格*数量)で値を変更したいが、私は行数でこれを行う方法がわかりませんZendビュー。

これを解決するためのJavaScriptに汎用アルゴリズムはありますか?

+0

TR差分で同じTDを得ることができますか? – bernie

答えて

0

各値フィールドには、数量項目のIDから導出できるID属性?もしそうなら、それはかなり素早く痛みのないものです。与えられた:

<table id="basket"> 
    <tr class="basket-row"> 
     <td class="basket-quantity"> 
      <input type="text" id="product1234_quantity"> 
     </td> 
     <td class="basket-subtotal"> 
      <input type="hidden" id="product1234_unitprice" value="20"> 
      <input type="text" readonly="readonly" id="product1234_subtotal"> 
     </td> 
    </tr> 
    <tr class="basket-row"> 
     <td class="basket-quantity"> 
      <input type="text" id="product5678_quantity"> 
     </td> 
     <td class="basket-subtotal"> 
      <input type="hidden" id="product5678_unitprice" value="30"> 
      <input type="text" readonly="readonly" id="product5678_subtotal"> 
     </td> 
    </tr> 
</table> 

ここでは、各製品の単価は隠し属性ですが、カートの保管場所はわかりません。どこからでも取得できると仮定し、jQueryを仮定しましょう。

$('#basket').on('change','.basket-quantity input',function(e) { 
    $('#'+this.id.replace('_quantity','_subtotal')).val(Number($('#'this.id.replace('_quantity','_unitprice')))*Number(this.value)); 
}); 

あなたが他のIDからIDを取得できない場合、あなたはいくつかのより複雑なDOMの照会を行う必要があるだろうが、ポイントは、ハンドラの実行時に、あなたは「何を入力把握する必要がありさ再更新する。

使用しているフレームワークを指定していません。普通のJSでは、これは、ブラウザ間の互換性を保ち、イベントの添付と処理を正規化するために、多くの追加コードが必要になります。あなたは

$(this).index() 

例えば

$("#jieguo_qian table tr:nth-child(4) td").each(function(){ 
    var tindex = $(this).index() + 1; 

を使用することができますそれぞれの中

+0

偉大な..よく見える、私はそれをテストしようとします。 – dariusz

0

ので、あなたがこれまでに何を持っているん

th th th 
td td td 
td td td 
関連する問題