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()