Come utilizzare javascript per ottenere html caratteri speciali nel testo di input

Voglio inviato un po ‘ di html carattere speciale campo di testo e quindi utilizzare javascript per farlo tornare nel suo formato originale: come se ho inviato “&pi”, mostra “π” sul testo di input, e quando ho l’uso di javascript per tornare indietro, mi dovrebbe arrivare “&pi”, ma ho solo “π”, non “&pi”. Si prega di aiutare, il mio codice è il seguente:

<script type="text/javascript"> 
function qpush(a) {
    document.getElementById('input').value += a;
}

function show(a) {
    alert(document.getElementById('input').value);
}
</script>

<input type="text" id="input" />
<input type="button" onclick="qpush('&pi;');" value="&pi;" />
<input type="button" onclick="show()" value="go" />

OriginaleL’autore kli | 2012-07-17

3 Replies
  1. 3

    A seconda di che cosa avete bisogno per voi potrebbe fare una delle 3 opzioni:

    1. usare il javascript fuga e unescape funzioni:

      var sfuggito = escape(‘π’) //sfuggito = “%u03C0” che unescape torneranno in π

    2. Se si dispone di jQuery, html metodo potrebbe fare il trucco:

      $(‘input’).val().html()

    3. Questo è un hack, ma sarà il lavoro: per Salvare una copia del valore nel modo desiderato è tornato su un ‘dati’ attributo dell’elemento input, valida in html5 e non rompere in altri doctype.

      documento.getElementById(‘input’).setAttribute(‘data-proprietà originalvalue’, ‘&pi’)

    Grazie per l’aiuto, io uso sfuggito modulo per i dati, e non di escape modulo per display, funziona bene.
    Fresco, io sono felice di essere di aiuto 🙂
    Btw, Se ti piace la mia risposta, si può votare per favore?

    OriginaleL’autore Lior

  2. 1

    Il value albergo vi darà testo e non HTML.

    Si potrebbe provare getAttribute('value') ma dal momento che &pi; e π sono identicamente equivalente in HTML, un browser è completamente libero di tornare π anche per questo.

    una Volta che l’HTML è stato convertito in un DOM, non c’è modo di accedere al codice HTML originale (a corto di scaricare il codice HTML di nuovo con XHR e l’analisi del testo grezzo di te).

    Se si desidera che i dati vengano "&pi;" quindi il codice HTML deve essere &amp;pi;.

    Se si desidera e che il rendering sul pulsante per essere π allora avete bisogno:

    <button type="button" value="&amp;pi;">π</button>

    (Tenendo a mente i vari bug che vecchio IE ha con il pulsante elemento)

    Che, naturalmente, display &pi; quando si copia il valore di immissione del testo.

    Grazie per il vostro aiuto, ma il documento.getElementById(‘input’).getAttribute(‘valore’) return null.
    Oh, si dimentica che questo è stato un altro elemento che si stavano ottenendo il valore. getAttribute restituisce il valore dell’attributo (che è il valore predefinito per l’ingresso) e non il valore corrente.

    OriginaleL’autore Quentin

  3. 0

    Utilizzare questo per sostituire tutte le occorrenze del carattere:

    document.getElementById('input').value.replace(/π/g,"&pi;");
    bella soluzione, ma ho bisogno di fare per tutti i caratteri speciali, non solo π.
    Si potrebbe mantenere una matrice di particolare entità che esegue il mapping di sostituire.
    Ho provato, ma sembra che sostituire() non può utilizzare per caratteri speciali come π.
    per me funziona: jsfiddle.net/mNexE

    OriginaleL’autore Christoph

Lascia un commento