2012-07-09 15 views
6

Sto tentando di sostituire il testo evidenziato evidenziato (contrassegnato) dall'elemento.jQuery sostituisce il testo contrassegnato

Questo è come mi ottenere il testo evidenziato finora:

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

Quindi, se ho qualcosa di simile nella textarea: "orange mela mela banana" e segnare la terza parola (mela) Voglio sostituire esattamente ciò che ho segnato senza altre occorrenze di "mela" nella textarea.

C'è un modo per specificare l'area di inizio e di fine in cui il codice deve cercare la sostituzione nella stringa?

+0

Mi sento come questo è una cosa Regex. .. –

+0

@Andrew, stai cullando. Hai modificato la domanda entro un minuto. Molto bello – Adrian

+0

se riesci a trovare la posizione allora http://www.w3schools.com/jsref/jsref_charat.asp sarà utile nel tuo caso. – Adrian

risposta

5

Si potrebbe provare qualcosa di simile,

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); 

mi piacerebbe giocare con questo un po 'potrebbe essere via da 1 sia sul startStr o endStr (ho sempre pasticcio che fino: /), ma questo dovrebbe fai quello che stai cercando di fare.

+0

Sì, questo è esattamente quello che stavo cercando! Grazie per il tuo tempo! – Zhivko

+0

np. Felice di aiutare. :) – Dan

3

scritto questo prima della risposta di cui sopra, ma lo terrò, perché è solo un modo diverso di scrivere il codice/non usa 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 penso che la tua risposta fosse migliore della mia. Molto più pulito e come funzione può essere gestito più facilmente. gj – Dan

+0

Anche questa è una soluzione molto accurata. Grazie! – Zhivko

Problemi correlati