Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/08/2013, 09:56
oms02
 
Fecha de Ingreso: junio-2010
Mensajes: 373
Antigüedad: 14 años, 5 meses
Puntos: 11
haciendo un max-length

Tengo un div "editable" y necesito hacer un max-length sobre éste.

Básicamente funciona bien pero no consigo hacerlo funcionar correctamente si una vez llegado al máximo de caracteres permitidos, selecciono todo o parte del texto y pulso una tecla (es decir, borro todo lo escrito y escribo el caracter de la tecla).

Código HTML:
Ver original
  1. <div id="texto" contenteditable="true">afds</div>

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.     var lugar = '#texto';
  3.     var max = 10;
  4.     $(lugar).keyup(function(e){
  5.         contador(lugar,max,e);
  6.     }).keydown(function(e){
  7.         contador(lugar,max,e);
  8.     });
  9.  
  10.     function contador(lugar,max,e){
  11.         if(e.which != 8 && e.which != 37 && e.which != 38 && e.which != 39 && e.which != 40 &&
  12.         $(lugar).text().length > max)
  13.             {e.preventDefault();}
  14.     }
  15. });

Aqui el ejemplo por si no apetece copiar y pegar el codigo.

En realidad el problema no lo quiero abordar unica y exclusivamente mediante los eventos de teclado ya que puede seleccionarse el texto de multiples maneras: control+a, shift+flechas, seleccion manual con el raton,.... no obstante, cualquier ayuda sería bienvenida.

Un saludo y muchas gracias por vuestro tiempo.