2012-08-28 220 views
0

需要一點幫助......jQuery的調用keyup事件不工作

下一個數值輸入後增加了一個轉換的貨幣標籤 - 工作正常,當我按下KEYUP(我可以看到coverted標籤):

$(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()功能;

回答

2

它。最好是將它全部包裝在一個函數中,然後將它用於綁定和文檔準備(或者你想要的其他地方)使用它),但是你可以使用觸發你正在嘗試做的事:

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

這應該觸發keyup事件提供已設置。

1

1.Wrap它準備處理

$(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(); 
    }); 

}); 
+0

對不起,它實際上已經包裝在一個準備好的處理程序中,但我忘記了鍵入它 - 相應地更改了代碼示例 – proggrock

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(); 
}); 
1

我通常發現鍵盤事件以各種方式不可靠。我可能會移動到一個keypress()事件綁定到,除非你專門尋找要按住的鍵,然後放開每個動作的不同功能。

如果您希望在文檔準備好時計算出值,您可以採用匿名函數,並將其設置爲「真實」命名函數,然後在文檔準備就緒時調用它並將其附加到keyup /按鍵事件。