Я пишу JS (в основном jQuery) уже несколько месяцев, но сегодня я решил сделать свою первую абстракцию как метод jQuery.У меня уже есть рабочий код, но я чувствую / знаю, что я делаю это неправильно, поэтому я прихожу сюда для некоторого просветления.
Примечание: Пожалуйста, не отвечайте, что уже есть что-то, что делаеттрюк, как я уже знаю это.Мой интерес в этом вопросе довольно образовательный.
Что мой код предназначен для выполнения (и делает):
Ограничение символов текстового поля и изменение цвета счетчика, когда пользовательПриближается к концу.
И вот что у меня есть:
$(function(){
$('#bio textarea').keyup(function(){
$(this).char_length_validation({
maxlength: 500,
warning: 50,
validationSelector: '#bio .note'
})
})
$('#bio textarea').trigger('keyup');
})
jQuery.fn.char_length_validation = function(opts){
chars_left = opts.maxlength - this.val().length;
if(chars_left >= 0){
$(opts.validationSelector + ' .value').text(chars_left);
if(chars_left < opts.warning){
$(opts.validationSelector).addClass('invalid');
}
else{
$(opts.validationSelector).removeClass('invalid');
}
}
else{
this.value = this.value.substring(0, opts.maxlength);
}
}
В HTML:
<div id="bio">
<textarea>Some text</textarea>
<p class="note>
<span class="value">XX</span>
<span> characters left</span>
</p>
</div>
В частности, я чувствую себя очень неудобно, связывая событие для каждой клавишивместо однократного связывания и последующего вызова метода.
Кроме того, (и, следовательно, заголовок) мне нужно сначала вызвать метод (при отображении страницы), а затем каждый раз, когда пользователь вводит символ.
Заранее спасибо за ваше время:)