2011-02-06 14 views
0

ユーザは、長さの異なる2つのメッセージタイプの中から選択できます。 160文字と1071文字がサポートされています。2つのjQueryカウンタを切り替える

通常、ユーザーはタイプを選択してメッセージを書きます。しかし、彼が書いている間、彼はメッセージタイプを変更するかもしれません。

これは私がカウンタを使用する方法である:

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が選択され、ユーザが1071年に160の文字およびスイッチを書いているときに問題があることは、カウンタが残りとして911を示しているが、ユーザが許可されていない文字さらに文字を入力する。

私はユーザーがメッセージタイプを切り替えるたびに上記のコードを呼び出します。誰にもその問題に関するアイデアはありますか?たぶんnoble-counちょっと削除する必要がありますか?しかし、それは私の場合はとにかく上書きされませんか?

答えて

3

NobleCountは、バインドするイベントリスナーをリセットしないためです。したがって、大量のmax_charsの入力を停止するイベントリスナーを追加しても、.NobleCount()を2回呼び出すと、古いものがそのまま残っているため、max_charsの量を少なくすることができなくなります。

溶液を2関数はNobleCountファイルへの呼び出しを追加することです:ライン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) { 

は( - ラインがにある++、古いラインであります参照作業たとえば)

に置き換える:それは醜いので、あなたはjavascriptのフレームにスクロールする場合は、IVEが実装されていることがわかりますが、http://jsfiddle.net/Fm5dC/ (私は文字通り、jsfiddleにgithubのからの彼のjsファイル全体をコピーします前のNED変化する)私はおそらくこれがあなたには、いくつかの他の​​またはkeyupリスナーを持っている場合、問題がどこにあるIVEはあなたを示したが、それは、同様にそれらを削除しますので、最適な回避策ではないことを言及する必要があります

、それは作るためにそれは難しいことではありませんこれはここからより強固になりました。

また、プラグインの作者にバグの説明、回避策などを連絡して、大衆向けに実装できるようにしてください。

関連する問題