jQuery调用keyup事件无法正常工作

时间:2012-08-28 16:17:10

标签: javascript jquery

需要一些帮助...

以下内容在输入数字值后添加转换后的货币标签 - 按下按键时工作正常(我可以看到隐藏的标签):

  $(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 个答案:

答案 0 :(得分: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 :(得分:2)

最好将它全部包装在一个函数中,然后将它用于绑定和文档就绪(或者你想要使用它的任何地方),但是你可以使用触发器来执行你想要做的事情:

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

这应该触发keyup事件,前提是它已被设置。

答案 2 :(得分: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();
    });

});

答案 3 :(得分:1)

我经常发现键盘事件以各种方式不可靠。我可能会转移到一个keypress()事件来绑定,除非你专门寻找要按住的键然后为每个动作释放不同的功能。

如果你想在文档准备就绪时计算出值,可以使用匿名函数,并使其成为“真正的”命名函数,然后在文档准备就绪时调用它,并将其附加到keyup /按键事件。