JQuery возвращает значение ввода в VAR

Я пытаюсь сделать переменную равной значению текстового поля. У меня значение текстового поля установлено на переменную и возвращено как предупреждение (пока), но я не могу понять, как вызвать эту переменную из других функций.

$('#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/>

Любая помощь будет отличной. Попытка добавить переменную max_char в maxCharacterSize для count_options

3 ответа

Решение

Все, что вам нужно сделать, это объявить max_char в более широкой области видимости, то есть вне функции keyup:

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);
});

Если я вас правильно понимаю, если вы объявите var в глобальной области видимости javascript

Или если у вас есть прямой доступ к входу с

$("#max_char").val()
parseInt($('#max_char').val())
Другие вопросы по тегам