jQuery默认不在任何IE版本中工作

jQuery默认不在任何IE版本中工作,jquery,internet-explorer,preventdefault,Jquery,Internet Explorer,Preventdefault,我试图阻止用户在字符数达到某个特定值时向textarea输入更多的输入 我的代码在Chrome、Safarai和Firefox中运行良好 但是preventDefault方法在IE的任何版本中都不适用于我 关于这一点,我发现了许多类似的话题,包括最常见的建议: 执行检查以确保preventDefault存在。如果不存在,请使用IEsreturnValue=false。问题是returnValue=false也不起作用 有什么建议吗 // Attach textarea char counte

我试图阻止用户在字符数达到某个特定值时向textarea输入更多的输入

我的代码在Chrome、Safarai和Firefox中运行良好

但是preventDefault方法在IE的任何版本中都不适用于我

关于这一点,我发现了许多类似的话题,包括最常见的建议:

  • 执行检查以确保preventDefault存在。如果不存在,请使用IEsreturnValue=false。问题是returnValue=false也不起作用
有什么建议吗

// Attach textarea char counter to all textarea's with class of 'textarea-char-count'
$('.textarea-char-count').live("keyup", function(event) {
    MYAPP.COMMON.textareaCounter(this, event);
}); 

// Attach textarea char counter to element
MYAPP.COMMON.textareaCounter = function(element, evt) {

    //Get char limit
    var limit = $(element).attr("maxlength");

    // get current character count
    var current = $(element).val().length;

    // if current character count is greater than or equal to the character limit
    if(current >= limit) {
        // prevent further characters from being entered apart from the 
        // Delete and Backspace keys
        if(evt.which != 0 && evt.which != 8)
        {
            if (evt.preventDefault) {
                evt.preventDefault();
            }
            else {
                evt.returnValue = false;
            }
        }
    }

    // add the remaining character count to our span
    $(element).parent().next().show().text( current + " / " +  limit);
}

将事件从
keypup
更改为
keypdown
,它将起作用

演示:使用keyup

演示:使用keydown

按键事件将不起作用

注意:计数器的行为仍然异常


还可以做一些更改,例如从
live
移动到
on
,因为
live
已被弃用

将事件从
keyup
更改为
keydown
,它将起作用

演示:使用keyup

演示:使用keydown

按键事件将不起作用

注意:计数器的行为仍然异常


由于
live
已被弃用,因此可以进行更多的更改,例如从
live
移动到
on
live
已被弃用,并使用
keypress

$('body').delegate(".textarea-char-count","keypress", function(event) {
        MYAPP.COMMON.textareaCounter(this, event);
    }); 

live
折旧并使用
keypress

$('body').delegate(".textarea-char-count","keypress", function(event) {
        MYAPP.COMMON.textareaCounter(this, event);
    }); 

哪个版本的IE和哪个版本的jQuery?在IE 8和9try use stopPropagation()中它对我有效,同时更新您的jquery库文件...@s.lenders-IE for me和jQuery1.7.2的所有版本请使用最新的jquery进行索引。在所有版本中,我要补充的是,7及以下版本中的任何内容都已过时,不应使用。因此,如果它在8+中不起作用,那么好吧。@s.lenders:不是每个人都可以对使用哪种浏览器设置这样的限制……哪种版本的IE和哪种版本的jQuery?在IE 8和9try use stopPropagation()中它对我有效,同时更新您的jquery库文件...@s.lenders-IE for me和jQuery1.7.2的所有版本请使用最新的jquery进行索引。在所有版本中,我要补充的是,7及以下版本中的任何内容都已过时,不应使用。所以,如果它在8+中不起作用,那么好吧。@s.lenders:不是每个人都可以对使用哪种浏览器设置这样的限制……你知道为什么keydown有效而keydup无效吗?Keydown的行为非常奇怪,正如您所建议的。目前正在使用keydown解决方案,这将有一些不错的用户体验!我认为,这是因为在处理
keyup
时,按下的键已经添加到输入值中,因此您无法恢复任何想法,为什么keyup不能工作,而keyup不能工作?Keydown的行为非常奇怪,正如您所建议的。目前正在使用keydown解决方案,这将有一些不错的用户体验!我认为,这是因为在处理
keyup
时,按下的键已经添加到输入值中,因此您无法还原它