2011-09-17 11 views
7

Voglio sostituire una stringa particolare in #TextArea1. Questo succede quando si fa clic su un pulsante.Stringa che sostituisce in un div

cercare fuori con il codice qui sotto, ma in grado di farlo funzionare:

$('#TextArea1').text().replace("wef","--"); 

Qual è la sintassi corretta per sostituire una parola in un div?

risposta

3

replace() crea una nuova stringa e lo restituisce, quindi è sempre restituito nel nulla. Devi prendere la nuova stringa e rimetterla nella casella di testo. Questo jsfiddle mostra come.

<textarea id="t"> 
    hello 
</textarea> 
var text = $('#t').text(); 
text = text.replace('h', 'b'); 
$('#t').text(text); 
+0

ah bello, grazie Wesley. –

+0

Grazie Matt ... Era il modo più semplice, si adattava bene al mio, piccolo codice complicato. – X10nD

+0

Def date un'occhiata alle altre risposte, tuttavia, presentano alcuni punti davvero validi.Il codice –

5

Vi sono vicino, provate questo:

$('#TextArea1').text($('#TextArea1').text().replace(/wef/g,"--")); 

O un ottimizzato uno

var $textarea = $('#TextArea1'); 
$textarea.text($textarea.text().replace(/wef/g,"--")); 

Se si tratta di un elemento textarea, si farebbe:

var $textarea = $('#TextArea1'); 
$textarea.val($textarea.val().replace(/wef/g,"--")); 
+0

+1 per la sostituzione di tutte le istanze, mentre altre risposte sostituire solo la prima istanza. Non sono sicuro di quale sia l'obiettivo dell'OP, ma presumo che questo ne faccia parte. –

14

passa una funzione per il metodo text()[docs] che restituisce il valore che si desidera impostare:

$('#TextArea1').text(function(i, txt) { 
    return txt.replace("wef","--"); 
}); 

I parametri della funzione sono i seguenti:

  • i è l'indice dell'elemento corrente nel iterazione
  • txt è il contenuto di testo corrente dell'elemento corrente

Il valore restituito dalla funzione verrà impostato come nuovo valore per l'elemento corrente.

+5

+1 per utilizzare una funzione come argomento –

+2

+1, ecco fatto. Un bel distintivo di risposta. :) – Shef

4

È stato impostato anche il testo:

var text = $('#TextArea1').text().replace("wef","--"); 
$('#TextArea1').text(text); 

o, utilizzando una funzione:

$('#TextArea1').text(function(index, text) { 
    return text.replace("wef","--"); 
}); 

Nota: se questo è un <textarea>, utilizzare val() invece di text().

var text = $('#TextArea1').val().replace("wef","--"); 
$('#TextArea1').val(text); 
Problemi correlati