1

変数をテキストボックスの値と等しくしようとしています。テキストボックスの値が変数に設定され、アラートとして返されます(今のところ)が、他の関数からその変数を呼び出す方法がわかりません。

$('#max_char').keyup(function () {
    var max_char = $(this).val();
    alert(max_char + ' Handler for .keyup() called.');
});

var count_options = {
    'maxCharacterSize': max_char,
    'originalStyle': 'originalDisplayInfo',
    'warningStyle': 'warningDisplayInfo',
    'warningNumber': 40,
    'displayFormat': '#input Characters | #left Characters Left | #words Words'
};

$('#textinput').textareaCount(count_options);
});

HTML

<textarea cols="68" rows="21" name="textinput" id="textinput"></textarea><br/>
    <input type="textbox" id="max_char" name="max_char" value="-1" /> Max Characters <br/>

どんな助けでも素晴らしいでしょう。count_optionsのmaxCharacterSizeにvarmax_charを追加しようとしています

4

3 に答える 3

4

あなたがする必要があるmax_charのは、より高いスコープで、すなわちキーアップ関数の外で宣言することです:

var max_char;

$('#max_char').keyup(function () {
    max_char = +$(this).val();
    alert(max_char + ' Handler for .keyup() called.');
});

+また、の前に$(this).val()文字列から数値に変換するためにを置くことに注意してください"1" + 1 == "11"


更新

プラグインが機能しない理由は、ドキュメントの準備ができたときにプラグインが一度textareaCount初期化されるためです。現時点では、ユーザーがまだ何も入力していないため、何もありません。max_char

目的の効果を得るには、キーアップごとにプラグインを再構成または再初期化する必要があります。残念ながら、プラグインはこれを行う簡単な方法を文書化していません。プラグインのソースコードを調べた後、プラグインを再度初期化する前に、元に戻す必要があるイベントは3つしかないと思います。これを試してみてください:

var count_options = {
    'maxCharacterSize': 100, // Just some default value
    'originalStyle': 'originalDisplayInfo',
    'warningStyle': 'warningDisplayInfo',
    'warningNumber': 40,
    'displayFormat': '#input Characters | #left Characters Left | #words Words'
};

// Initialise the plugin on document ready
$('#textinput').textareaCount(count_options);

$('#max_char').keyup(function () {
    var max_char = +$(this).val();
    count_options.maxCharacterSize = max_char;

    // Unbind the 3 events the plugin uses before initialising it
    $('#textinput')
        .next('.charleft').remove().end()
        .unbind('keyup').unbind('mouseover').unbind('paste')
        .textareaCount(count_options);
});
于 2011-01-23T04:00:31.130 に答える
2

私があなたを正しく理解しているなら、あなたがjavascriptのグローバルスコープ内でvarを宣言しているなら

または、入力に直接アクセスする場合

$("#max_char").val()
于 2011-01-23T04:01:02.907 に答える
0
parseInt($('#max_char').val())
于 2011-01-23T03:59:05.660 に答える