0

jQueryを使用していくつかの入力フィールドをspan要素にバインドしようとしています。例として、整数値の2つの入力フィールドがあります。整数値の合計は、スパン要素に表示されます。これで、入力フィールドの1つが変更されると、span要素が常に更新されるはずです(これは、jqueryで.keyup()イベントを使用するためです)。私には実用的な解決策があります。しかし、それは私には足を引きずる解決策のようです。だからどうするのかしら。前もって感謝します。

ここにコード: http: //jsfiddle.net/SJAwb/2/

乾杯ヴォルフガング

4

2 に答える 2

0

あなたができない理由はありますか:

$('input[type="text"]').on('keyup', function(e) {
    if (e.which === 13) e.preventDefault();
    var span = $(this).nextAll('span').first(),
        val = this.value,
        mult = $('#'+span.data("multiplier")).val();
    span.html(( parseFloat(val, 10) * parseFloat(mult, 10) ));
});

フィドル

于 2012-08-17T20:31:02.877 に答える
0

ID セレクターの代わりにクラス セレクターを使用する必要があります。

すべての入力ボックスの値を追加し、乗数の値で乗算します。デモの div は表示用であり、実際には必要ありません。

以下の私のアプローチを参照してください。

デモ: http://jsfiddle.net/SJAwb/8/

JS:

$('.listener').each(function () {
    var element = $(this),
        dataBound = $(this).data('bound'),
        dataMultiplier = $(this).data("multiplier"),
        val;

    $('.' + dataBound).on('keyup', {db: dataBound, dm: dataMultiplier}, function (event) {
        /* block ENTER key stroke */
        if (event.which === 13) {
            event.preventDefault();
        }

        /* calculate result */
        val = 0;

        $('.' + event.data.db).each(function (idx, el) {
            val += parseFloat (el.value, 10);
        });

        val = val * parseFloat($('.' + event.data.dm).val());

        if (isNaN(val)) {
          element.html("Please enter a valid number");
        } else {
          element.html(val);
        }
    });
});
于 2012-08-17T20:50:14.717 に答える