1

私はJqueryの初心者です:

クリック機能と変更機能があります。変更機能はクリック機能のジョブを「停止」しているようです。

$(".calc").click(function() {


    for (i = 1; i <= 2; i++) {

        $("#p" + i).val(parseFloat((parseFloat($("#amount" + i).val())) / (parseFloat($("#q" + i).val()))).toFixed(5)).change();


    }

});

$('.priceRow').change(function() {

    var q1 = parseFloat($('#q1').val(), 10);
    var qval1 = 0;
    if (q1 > 0) {
        qval1 = q1;
    }

    var q2 = parseFloat($('#q2').val(), 10);
    var qval2 = 0;
    if (q2 > 0) {
        qval2 = q2;
    }

    var p1 = parseFloat($('#p1').val(), 10);
    var puval1;
    if (p1 > 0) {
        puval1 = p1;
    }
    var p2 = parseFloat($('#p2').val(), 10);
    var puval2 = 0;
    if (p2 > 0) {
        puval2 = p2;
    }

    var subtot1;

    subtot1 = parseFloat(qval1 * puval1);

    var subtot2;
    subtot2 = parseFloat(qval2 * puval2);
    var subtot = 0;

    $('#amount1').val(parseFloat(subtot1).toFixed(2)).change();
  //  $('#amount2').val(parseFloat(subtot2).toFixed(2)).change();


});

});

htmlコード

<div class="priceRow">
q1 : <input id="q1" value="0" class="priceRow"/>
p1 : <input id="p1" value="0" class="priceRow"/>
<a href="#" id="calc2" class="calc">calc</a>
</div>
<div class="priceRow">
 q2 :  <input id="q2" value="0"/>
 p2 :  <input id="p2" value="0" />
<a href="#" id="calc2" class="calc">calc</a> 
</div>
<br>
amount1: <input id="amount1" class="subtot">  </span><br>
amount2: <input id="amount2" class="subtot">  </span><br>
</p>

クリック機能が2行目で機能しない:私の間違いは何ですか?

どうもありがとう

デモ: http: //jsfiddle.net/skipperit/mCnqH/3/

4

3 に答える 3

0

価格行内のテキストボックスに変更イベントハンドラーをアタッチすることが必要だと思います。divでの変更イベントは、せいぜい、ふざけています。変更イベントの添付ファイルを次のように更新してみてください。

$('.priceRow input:text').change(...);
于 2012-12-29T20:15:45.460 に答える
0

追加

class="priceRow"

IDp2およびq2を持つ入力フィールドに。現在、p1q1だけがそれを持っています

http://jsfiddle.net/mCnqH/5/

于 2012-12-29T20:16:03.570 に答える
0

最初からやり直すことをお勧めします。

IDをページに複製することはできません。代わりにクラスを使用する必要があります。

を使用しrowて行のメインの親にトラバースし、その行の要素のみを検索するためにclosest()使用する内の要素のみを操作するにはfind()

例:

$(".calc").click(function(){
   /* "this" is the current element clciked*/

    var $row= $(this).closest( '.priceRow')
     var q1=$row.find('.q1');/* note using class="q1" not ID*/
});

changeイベントはフォーム入力でのみ発生するため、発生$('.priceRow').changeすることはありません

于 2012-12-29T20:17:45.830 に答える