JQuery возвращает значение ввода в VAR - PullRequest
1 голос
/ 23 января 2011

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

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

4 голосов
/ 23 января 2011

Все, что вам нужно сделать, это объявить 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);
});
2 голосов
/ 23 января 2011

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

Или если вы напрямую обращаетесь к входу с помощью

$("#max_char").val()
0 голосов
/ 23 января 2011
parseInt($('#max_char').val())
...