2

フォームのテキストフィールドから文字を数えるスクリプトを作成しましたが、現在は機能しています。アラートが正しくカウントされるかどうかを確認するために内部にアラートを配置しましたkeyup functionが、毎回i6 (フォーム要素の合計) です。その外側はkeyup function正しくカウントされます。何が問題なのですか?コードに問題はありません。また、コンソール ログは空です (エラーなし)。

// Count characters
formElementsTitles = ['content_title', 'content_description', 'text_content', 'image_url', 'video_embed', 'aditional_info'];
formElementsLengths = ['100', '5000', '20000', '1000', '1000', '1000'];

for(i = 0; i < formElementsTitles.length; i++)
{   
    $('#'+formElementsTitles[i]).keyup(function() {

        charactersMax = formElementsLengths[i];
        charactersCurrent = $(this).val().length;
        charactersRemaining = charactersMax - charactersCurrent;

        if(charactersCurrent >= charactersMax)
        {
            $("#count_"+formElementsTitles[i]).html('<span class="content_count_chars_yellow">'+charactersRemaining+'</span> characters remaining');
        }
        else
        {
            $("#count_"+formElementsTitles[i]).html('<span class="content_count_chars_green">'+charactersRemaining+'</span> characters remaining');
        }
    });
}
4

1 に答える 1

1

イベント関数で変数を使用しようとしていiますが、関数はイベントが実際に発生したときにのみ実行されるため、機能しません!

これはあなたのために働くはずです:

var formElements = {
    content_title: {
        maxLength: 100
    }
}

for(title in formElements)
{   
    $('#'+title).keyup(function() {

        var charactersMax         = formElements[$(this).attr('id')].maxLength;
        var charactersCurrent     = $(this).val().length;
        var charactersRemaining   = charactersMax - charactersCurrent;

        if(charactersCurrent >= charactersMax)
        {
            $("#count_"+$(this).attr('id')).html('<span class="content_count_chars_yellow">'+charactersRemaining+'</span> characters remaining');
        }
        else
        {
           $("#count_"+$(this).attr('id')).html('<span class="content_count_chars_green">'+charactersRemaining+'</span> characters remaining');
        }
    });
}

ここでフィドルを参照してください:http://jsfiddle.net/rA2Fm/

于 2013-03-23T15:09:21.780 に答える