Я пытаюсь реализовать общую функцию для формы с несколькими полями в следующем формате.Javascript: set label text
<label id="LblTextCount"></label>
<textarea name="text" onKeyPress="checkLength(this, 512, LblTextCount)">
</textarea>
А следующий JavaScript:
function checkLength(object, maxlength, label) {
charsleft = (maxlength - object.value.length);
// never allow to exceed the specified limit
if(charsleft < 0) {
object.value = object.value.substring(0, maxlength-1);
}
// I'm trying to set the value of charsleft into the label
label.innerText = charsleft;
document.getElementById('LblTextCount').InnerHTML = charsleft;
}
Первая часть работает отлично, но я не в состоянии установить значение charsleft
в этикетку. Что я делаю не так? Обратите внимание, что я ищу динамический подход вместо жесткого кодирования имени метки в функции JS. JQuery тоже будет хорошо :)
Решение - спасибо всем!
HTML
<label id="LblTextCount"></label>
<textarea name="text">
</textarea>
JS
$(document).ready(function() {
$('textarea[name=text]').keypress(function(e) {
checkLength($(this),512,$('#LblTextCount'));
}).focus(function() {
checkLength($(this),512,$('#LblTextCount'));
});
});
function checkLength(obj, maxlength, label) {
var charsleft = (maxlength - obj.val().length);
// never allow to exceed the specified limit
if(charsleft < 0) {
obj.val(obj.val().substring(0, maxlength-1));
}
// set the value of charsleft into the label
$(label).html(charsleft);
}
Есть элегантный способ также связывают checkLength() для OnFocus соответствующего onPaste без дублирования содержания $ (документ) .ready (функция())? – MrG
@MrG - Это, см. Мое редактирование. Также не то, что событие вставки не является кросс-браузером. – karim79
Tkx karim79, он отлично работает в отдельном окне (все перечисленные ниже браузеры), но выходит из строя на вкладке пользовательского интерфейса JQuery без каких-либо ошибок в консоли (сбой FF/Safari/Opera, IE работает нормально). У вас есть идея? Большое большое спасибо! – MrG