我看过关于这个主题的各种帖子。我正在为文本框创建一个字符递减计数器(例如“98 个字符左”),我可以触发它的唯一事件是 keydown()
,但它无法处理它当文本粘贴到文本框中时。我尝试制作一个 updateCharCount() 函数并将其设置为每个事件(全部同时进行,并且每个事件单独进行:keyup、keydown、keypress、change。
我还尝试使用 bind()
和 live()
设置处理程序。如果我尝试同时设置 keydown 和 keyup 的处理程序,则无论怎样,都不会发生火灾,更改只是简单地根本不会发生,尽管我到处读到这就是解决方案。怎么会这样?
此外,当我只处理 keydown()
事件时,我遇到了一些奇怪的行为。 (顺便说一句,我的文本框上的 maxLength 属性设置为 100)如果我键入最大字符数,退格一次或两次,然后再次键入最大计数,它将读取“左 1 个字符”,即使它已满,如果我从那里退格一次,它会显示“左 0 个字符”。这是我的代码:
function updateCharCount(){
var clientmsg = $("#usermsg").val();
var count = $("#usermsg").attr("maxLength") - clientmsg.length;
$("#charsleft").html(count);
}
$("#usermsg").keydown(updateCharCount());
如果有人能解释这种奇怪的行为那就太好了,但我真正想知道的是为什么如果 .change() 如此广泛使用,它对我不起作用,也对 .bind('change', ...) 或 .live('change', ...)
最佳答案
您可以使用.on()绑定(bind)多个事件(bind 和 live 已被弃用),如下所示:
$("#usermsg").on({
change: updateCharCount,
keyup: updateCharCount,
keydown: updateCharCount
})
<强> jsFiddle example
关于javascript - jQuery change() 事件 - 不适用于 bind()、live()、keyup+keydown+keypress,什么都没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12303177/