Estoy tratando de implementar una función genérica para un formulario con varios campos en el siguiente formato.Javascript: establecer texto de etiqueta
<label id="LblTextCount"></label>
<textarea name="text" onKeyPress="checkLength(this, 512, LblTextCount)">
</textarea>
Y el siguiente 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;
}
La primera parte funciona bien, pero estoy no es capaz de establecer el valor charsleft
en la etiqueta. ¿Qué estoy haciendo mal? Tenga en cuenta que estoy buscando un enfoque dinámico en lugar de codificar duro el nombre de la etiqueta en la función JS. JQuery estaría bien también :)
Solución - gracias a todos!
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);
}
¿Hay una manera elegante de obligar también checkLength() para onFocus respectiva onpaste sin duplicar el contenido del ready $ (document) (función()) función? – MrG
@MrG - Lo es, ver mi edición. Además, no es que el evento pegar no sea entre navegadores. – karim79
Tkx karim79, funciona perfectamente bien en una ventana separada (todos los navegadores se enumeran a continuación) pero falla dentro de una pestaña JQuery UI sin ningún error en la consola (FF/Safari/Opera falla, IE funciona bien). ¿Tienes una idea? ¡Muchas muchas gracias! – MrG