2012-07-09 20 views
6

Estoy tratando de reemplazar el texto resaltado (marcado) específico del elemento.jQuery reemplazar texto marcado

Así es como me sale el texto resaltado hasta ahora:

var markArea = $('.ElementText textarea').get(0); 
var text  = markArea.value.substring(markArea.selectionStart, markArea.selectionEnd);

Así que si tengo algo como esto en el área de texto: "manzana naranja manzana plátano" y marcar la tercera palabra (manzana) Quiero reemplace exactamente lo que he marcado sin ninguna otra ocurrencia de "manzana" en el área de texto.

¿Hay alguna manera de especificar el área de inicio y final en la que el código debería buscar el reemplazo en la cadena?

+0

Siento que esto es una cosa expresión regular. .. –

+0

@Andrew, estás rockeando. Usted ha editado la pregunta en un minuto. Muy bueno – Adrian

+0

si puede encontrar el puesto, entonces http://www.w3schools.com/jsref/jsref_charat.asp será útil en su caso. – Adrian

Respuesta

5

Usted podría intentar algo como esto,

var markArea = $('.ElementText textarea').get(0); 
var startStr = markArea.value.substring(0,markArea.selectionStart); 
var endStr = markArea.value.substring(markArea.selectionEnd); 
var text  = startStr +"REPLACEMENT VALUE HERE"+ endStr;  
$('.ElementText textarea').val(text); 

jugaría con esto un poco podría estar fuera por 1 ya sea en el startStr o endStr (siempre me lío que hasta: /) pero esto debe haz lo que estás buscando hacer.

+0

Sí, esto es exactamente lo que estaba buscando! ¡Gracias por tu tiempo! – Zhivko

+0

np. Encantado de ayudar. :) – Dan

3

escribió esto antes de que la respuesta anterior, pero voy a seguir porque es simplemente una forma diferente de escribir el código/no utiliza jQuery:

function replaceAtIndex(str,s,e,rep){ 
    return str.slice(0,s) + rep + str.slice(e); 
} 

markArea.value = replaceAtIndex(markArea.value,markArea.selectionStart,markArea.selectionEnd,"replacement"); 
+0

personalmente creo que tu respuesta fue mejor que la mía. Mucho más limpio y como función, se puede gestionar más fácilmente. gj – Dan

+0

Esa es una solución muy buena también. ¡Gracias! – Zhivko

Cuestiones relacionadas