javascript - jQuery change() 事件 - 不适用于 bind()、live()、keyup+keydown+keypress,什么都没有

标签 javascript jquery ajax

我看过关于这个主题的各种帖子。我正在为文本框创建一个字符递减计数器(例如“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/

相关文章:

javascript - 使用 CSS3 或 JS 用图案覆盖透明黑色剪影 PNG 的可见区域

javascript - 在后台执行查询时如何显示加载图标?

PHP、AJAX 用于注册表单

Javascript - 函数无法从 JQuery 获取外部输入值

javascript - require.js 和backbone.js 出现 Uncaught TypeError

javascript - Jquery - 具有多个类别的图像过滤器

php - 如何使用带有服务器验证的ajax在codeigniter中上传图像

jQuery 链接 - 为什么我不能链接它?

javascript - 通过ajax调用从php文件接收多个值

javascript - JQuery - 将 JS 转换为 JQuery 以生成允许解析 URL 参数的表