2012-02-29 5 views
0

私はテキストボックスを持っており、ユーザーがキーを押すたびに、フィールドの新しい長さを計算して、まだ使用できる文字の数を確認します。変数が値を変更するのを待つ

  1. チェックの長さを表示するカウンタが(ラさえずりa)は赤や黒でなければなりません場合は、「送信」ボタンを
  • チェックを有効にするかどう:その数、Iに基づいて

    しかし、今私は問題があります。各のkeydownイベントに、私は:

    remaining = 100 - count; 
    
    if (remaining > 9) 
    { 
        //blue counter; send is activated 
        //"if counter.class == red then counter.class = blue..." 
        //"send.off('click'); send.on('click', sendmessage)..." 
    } 
    else if ((remaining <= 9) && (remaining >= 0)) 
    { 
        //red counter; send is activated 
    } 
    else //remaining <0 
    { 
        //red counter; send is deactivated 
    } 
    

    をユーザーが... 3圏のいずれかが実行され、キーを押すたび圏を実行するが方法ではありません場合にのみ、変数の変更"ゾーン"(]∞, 9[; [9,0]; ]0; -∞[)?

  • +0

    http://jsfiddle.net/ZAjez/はどのようにカウントがゼロより小さくすることができますか? – nnnnnn

    +0

    私の悪い、それは実際に残っているcaractersの数です(もう一度、140限度のtwitterのような) – Manu

    +1

    jQueryを使用していますか? (私は 'send.off(...)に気づきました) – nnnnnn

    答えて

    1

    これは、よりエレガントに行うことができるが、簡単な答えはちょうど長さの前の値を覚えておくことです間違いなく:

    var prevCount = 10; 
    
    function checkLength() { 
        var count = // your logic to get current count here 
    
        if (count > 9 && prevCount <=9) { 
         // count has changed to > 9 
        } else if (count <=9 && count >= 0 && (prevCount > 9 || prevCount < 0) { 
         // count has changed to <=9 
        } else if (count < 0 && prevCount >= 0) { 
         // count has changed to < 0 
        } 
    
        prevCount = count; 
    } 
    

    初期化prevCountどのような値には、画面負荷理にかなって...

    (PSどのようにカウントがゼロ未満とすることができる?)

    更新:あなたは、あなたがこのような何かを行うことができますjQueryのを使用していることが確認できたので(想定しています「黒」と「赤」、あなたのスタイルシート内のクラスには、適切な色や書式設定)にしている:なしテキストまたはあまりにも多くのテキストがない場合

    $(document).ready(function() { 
        var limit = 100, 
         $rem = $("#remaining").addClass("black"), 
         $send = $("input"); 
    
        $("textarea").on("keydown keyup", function() { 
         var len = $(this).val().length, 
          remaining = limit - len; 
    
         $rem.text(remaining); 
         $send.prop("disabled", len === 0 || remaining < 0); 
    
         if (remaining <=9 && $rem.hasClass("black") 
          || remaining > 9 && $rem.hasClass("red")) 
          $rem.toggleClass("black red"); 
        }).keydown(); 
    });​ 
    

    は、送信ボタンを無効にします。必要に応じてクラスを黒から赤に変更します。 (また、デフォルトを黒にするだけオンとオフを「赤」クラスを切り替えることができます。)

    デモ:

    関連する問題