jQuery调用keyup事件不起作用

jQuery calling keyup event not working

本文关键字:不起作用 事件 keyup 调用 jQuery      更新时间:2023-09-26

需要一些帮助。。。

以下内容在输入数值后添加一个转换后的货币标签-当我按下键时效果良好(我可以看到覆盖的标签):

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

最好将其全部封装在一个函数中,然后将其用于绑定和文档准备(或您想使用它的任何其他地方),但是您可以使用触发器来执行您想要执行的操作:

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

这应该会触发keyup事件,前提是它已经设置好了。

将代码放入一个函数中,然后在加载和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.将其包装在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();
    });
});

我通常发现keyup事件在各种方面都是不可靠的。我可能会转移到要绑定的keypress()事件,除非您专门寻找要按住的键,然后为每个操作使用不同的功能。

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