在两个jQuery计数器之间切换

在两个jQuery计数器之间切换,jquery,noble-count,Jquery,Noble Count,用户可以选择两种消息类型,每种消息类型的长度不同。支持160个字符和1071个字符的消息类型 通常情况下,用户会选择一种类型并编写消息。但在他写作时,他可能会更改消息类型 这是我使用计数器的方式: switch(max){ case 160: $('#message').NobleCount('#messageInfo',{ max_chars: max, block_negative: tr

用户可以选择两种消息类型,每种消息类型的长度不同。支持160个字符和1071个字符的消息类型

通常情况下,用户会选择一种类型并编写消息。但在他写作时,他可能会更改消息类型

这是我使用计数器的方式:

switch(max){
        case 160:
            $('#message').NobleCount('#messageInfo',{
                max_chars: max,
                block_negative: true
            });
        break;
        case 1071:  
            $('#message').NobleCount('#messageInfo',{
                max_chars: max,
                block_negative: true,
                on_update: function(t_obj, char_area, c_settings, char_rem){
                    //...
                }
            });     
        break;
    }
问题是,当选择160时,用户已写入160个字符并切换到1071个字符,计数器显示911为剩余字符,但不允许用户输入更多字符


每次用户切换消息类型时,我都调用上面的代码。有人对这个问题有想法吗?也许t应该被移除?但在我的例子中,它不是被覆盖了吗?

原因是NobleCount不会重置它绑定的事件侦听器。因此,当您第二次调用.NobleCount时,虽然它添加了一个事件侦听器,可以阻止您输入较大的最大字符数,但旧的侦听器仍然存在,因此它将继续阻止您输入较小的最大字符数

解决方案是向NobleCount文件添加2个函数调用:

在第285行和第294行,更改:

-- $(t_obj).keydown(function(e) {
++ $(t_obj).unbind('keydown').keydown(function(e) {

-- $(t_obj).keyup(function(e) {
++ $(t_obj).unbind('keyup').keydown(function(e) {
-是旧的行,++是替换它的行

有关工作示例,请参见: 我将他的整个js文件从github复制到了JSFIDLE中,所以看起来很难看,尽管如果在javascript框架中滚动,您会看到我实现了上述更改

我可能应该提到,这不是最好的解决方法,因为如果你有其他的keydown或keydup监听器,它也会删除它们,尽管我已经告诉你了问题所在,但从这里开始,让这个修复变得更可靠并不难


另外,请与插件作者联系,提供错误描述、此解决方法等。这样他就可以为大众实现此功能。

原因是NobleCount不会重置它绑定的事件侦听器。因此,当您第二次调用.NobleCount时,虽然它添加了一个事件侦听器,可以阻止您输入较大的最大字符数,但旧的侦听器仍然存在,因此它将继续阻止您输入较小的最大字符数

解决方案是向NobleCount文件添加2个函数调用:

在第285行和第294行,更改:

-- $(t_obj).keydown(function(e) {
++ $(t_obj).unbind('keydown').keydown(function(e) {

-- $(t_obj).keyup(function(e) {
++ $(t_obj).unbind('keyup').keydown(function(e) {
-是旧的行,++是替换它的行

有关工作示例,请参见: 我将他的整个js文件从github复制到了JSFIDLE中,所以看起来很难看,尽管如果在javascript框架中滚动,您会看到我实现了上述更改

我可能应该提到,这不是最好的解决方法,因为如果你有其他的keydown或keydup监听器,它也会删除它们,尽管我已经告诉你了问题所在,但从这里开始,让这个修复变得更可靠并不难

此外,请与插件作者联系,提供错误描述、解决方法等,以便他能够为大众实现这一点