0

少し助けが必要です...

以下は、数値の入力後に変換された通貨ラベルを追加します-キーアップを押すと正常に機能します(隠されたラベルが表示されます)。

  $(document).ready(function(){ 
    $("input.currency-field").each(function () {
        $(this).after("<label class='currency'></label>");           
    });

    $("input.currency-field").bind("keyup", function () {
        $(this).siblings('label.currency').text($(this).val());
        $(this).siblings('label.currency').formatCurrency();
    });
});

キーアップを押すのを待つのではなく、ページの読み込み時に変換された値を読み込みたいのですが。.each関数にラベルを追加した後、keyupイベントを呼び出そうとしましたが、機能しないようです($( "input.currency-field")。keyup()を外部で呼び出そうとしました)働き;

4

4 に答える 4

2

コードを関数に入れて、ロード時とkeyupイベント時に呼び出します。これを試して:

// Load
$("input.currency-field").each(function () {
    $(this).after("<label class='currency'></label>");  
    setLabelValue($(this));
});

// Keyup
$("input.currency-field").bind("keyup", function() { setLabelValue($(this)) });

function setLabelValue($el) {
    $el.siblings('label.currency').text($el.val());
    $el.siblings('label.currency').formatCurrency();
});
于 2012-08-28T16:20:56.540 に答える
2

すべてを関数でラップしてから、バインドとドキュメントの準備ができている場合(または他の場所で使用する場合)の両方でこれを使用するのが最善ですが、実行しようとしていることに対してトリガーを使用できます。

$("input.currency-field").trigger('keyup');

設定されている場合、これによりキーアップイベントがトリガーされます。

于 2012-08-28T16:22:47.433 に答える
1

1.Readyハンドラーでラップします

$(document).ready(function(){
      $("input.currency-field").each(function () {
        $(this).after("<label class='currency'></label>");           
    });

    $("input.currency-field").bind("keyup", function () {
        $(this).siblings('label.currency').text($(this).val());
        $(this).siblings('label.currency').formatCurrency();
    });

});
于 2012-08-28T16:20:11.027 に答える
1

私は通常、キーアップイベントがさまざまな点で信頼できないことに気づきました。押したままにするキーを特に探している場合を除いて、バインドするkeypress()イベントに移動し、アクションごとに異なる機能を使用します。

ドキュメントの準備ができたときに値を計算する場合は、無名関数を使用して「実際の」名前付き関数にし、ドキュメントの準備ができたときに呼び出して、keyup/keypressイベントにアタッチします。

于 2012-08-28T16:24:13.727 に答える