1 votos

Nueva línea única vs nuevo párrafo en Textarea usando jQuery

Estoy implementando una funcionalidad llamada Nueva Línea Simple y Nuevo Párrafo en Textarea en el navegador Google Chrome (en IE mi solución está funcionando bien, así que no hay problema en IE porque IE considera Shift+Enter (\r\n) y Enter (\n) de manera diferente). El concepto es que si presiono Shift+Enter entonces la línea (textos) después del cursor debería pasar a la siguiente línea nueva (\r\n) pero debería considerarse en el mismo párrafo. Ahora, si presiono solo la tecla Enter, entonces también la línea (textos) después del cursor debería pasar a la siguiente línea nueva (\n) pero debería considerarse como un Nuevo Párrafo esta vez.

Ahora mi problema es: por defecto Textarea no considera \r\n según la documentación de la API de jQuery (http://api.jquery.com/val/). Solo considera \n ya sea que presione Shift+Enter o solo Enter. Para resolver eso, implementé un hook (proporcionado en el sitio de jQuery) llamado

$.valHooks.textarea = {
  get: function( elem ) {
    return elem.value.replace( /\r?\n/g, "\r\n" );
  }
};

Pero entonces siempre coloca \r\n sin importar qué teclas presione en Textarea. Quiero diferenciar entre Shift+Enter (\r\n) y solo Enter(\n). Pero si se coloca el hook anterior, entonces cada vez agrega \r\n ya sea que presione Shift+Enter o solo Enter.

En el lado del servidor, ahora es difícil identificar cómo considerar una Nueva Línea Simple (\r\n) o un Nuevo Párrafo (\n)? Porque en ambos casos, las combinaciones \r\n se envían desde Chrome Browser.

Según las teclas presionadas Shift+Enter y solo Enter, los diferenciaré en el lado del servidor. Pero como se explicó anteriormente, cada vez se envía \r\n de Chrome a Server.

Toda la pregunta anterior es solo para Google Chrome (funciona correctamente en todas las versiones de IE).

Si aún falta algo en la explicación anterior de la pregunta, por favor avíseme.

Esperando más asistencia :)

1voto

NullPointer Puntos 1329

Lo resolví por mí mismo. Como Chrome siempre devuelve \r\n tanto si pulsamos ENTER como si pulsamos SHIFT+ENTER. Hice un truco basado en mis necesidades.

Necesitaba colocar un carácter Unicode especial cuando el Usuario presiona SHIFT+ENTER y para lograr esto, utilicé el siguiente código:

jQuery(txtInputControl).val(contentOfInputControl.substring(0,caretPositionOfCursor) +  String.fromCharCode(172) + contentOfInputControl.substring(caretPositionOfCursor,contentOfInputControl.length));

Esto significa que coloco un carácter especial Unicode en medio de un contenido donde el Usuario ha presionado SHIFT+ENTER. También lo manejo en el lado del servidor. De esta manera puedo hacer un seguimiento desde ambos lados.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X