Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

visualizzazione caratteri speciali in textarea

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] visualizzazione caratteri speciali in textarea

Messaggioda Foto UtenteDaniele78 » 23 nov 2010, 16:27

Lato server ho:

...

$rows = array();

while($r = mysql_fetch_assoc($qry_result)) {
$rows[] = array_map('htmlentities',$r);
}

echo json_encode($rows);


nel file js ho:

...
$.ajax({
type: "POST",
url: scriptUrl,
data: string_serialize+"&pag_att="+pg+"&ris_per_pag="+ris_per_pag,
cache: false,
async:false,
err:function(request,error){
alert(error);
},
success: function(messaggio){
// alert(messaggio);
var obj = $.evalJSON(messaggio);
$("#"+idTabRis).show();

$('#'+idFormRis).html(show2darray(obj));


} //close success
});//close $.ajax
...

la funzione show2darray contiene un ciclo for che visualizza i risultati in una tabella.
Fin qui tutto funziona. Il problema sorge quando tento di sostituire una riga della tabella con delle textaree.

I caratteri accentati li visualizzo ad esempio come &egrave &ograve ecc.

Dovrei in pratica convertire tutti i caratteri della riga che mi interessa in formato rappresentabile nella textarea.

Ho letto in giro che se si utilizza .val() la conversione avviene in automatico ma è ciò che ho fatto e non è successo.

Io penso che se jquery non converte in automatico avrà senz' altro una funzione per farlo.
E' questo che desideravo chiedervi.
Grazie.
Avatar utente
Foto UtenteDaniele78
290 2 9
Expert
Expert
 
Messaggi: 288
Iscritto il: 9 set 2008, 23:07

0
voti

[2] Re: visualizzazione caratteri speciali in textarea

Messaggioda Foto Utentephylum » 23 nov 2010, 17:13

puoi usare html_entity_decode

Codice: Seleziona tutto
<?php
$testo = json_encode(htmlentities("la vita è bella"));
echo "<textarea>" . html_entity_decode(json_decode($testo)) . "</textarea>";
?>

res.png
res.png (814 Byte) Osservato 5149 volte

oppure lavorare con testo in utf8 a patto di informare il browser
Codice: Seleziona tutto
<?php
$testo = json_encode(utf8_encode("la vita è bella"));
echo "<textarea>" . utf8_decode(json_decode($testo)) . "</textarea>";
?>

res.png
res.png (814 Byte) Osservato 5149 volte
\int_{}tella
Immagine
Avatar utente
Foto Utentephylum
6.191 5 7 12
G.Master EY
G.Master EY
 
Messaggi: 3217
Iscritto il: 9 ott 2007, 12:40

0
voti

[3] Re: visualizzazione caratteri speciali in textarea

Messaggioda Foto UtenteDaniele78 » 23 nov 2010, 20:20

Grazie. Si tratta però di una pagina di ricerca in cui la tabella risultati viene creata dinamicamente (senza ricaricare la pagina quindi).
E' questo il motivo per cui cercavo una funzione js.
Probabilmente prima mi sono sbagliato non si tratta di textarea.
Il codice utilizzato è del tipo:

<input type="text" name="text1" value="" />

Per me è molto importante settare l' attributo value in modo da poter poi inviare i dati del form in POST
Avatar utente
Foto UtenteDaniele78
290 2 9
Expert
Expert
 
Messaggi: 288
Iscritto il: 9 set 2008, 23:07

0
voti

[4] Re: visualizzazione caratteri speciali in textarea

Messaggioda Foto Utenteangus » 23 nov 2010, 20:34

in /dev/null no one can hear you scream
Avatar utente
Foto Utenteangus
8.490 4 6 9
G.Master EY
G.Master EY
 
Messaggi: 4172
Iscritto il: 20 giu 2008, 17:25

0
voti

[5] Re: visualizzazione caratteri speciali in textarea

Messaggioda Foto Utentephylum » 23 nov 2010, 21:13

@Daniele78
agg. automatico & co.: io mi riferivo al fatto che quello che ti succede è "merito" di
$rows[] = array_map('htmlentities',$r);
e la funzione inversa è html_entity_decode :P

jquery:
mmm (plugin unescape)
Codice: Seleziona tutto
(function($) {
    $.fn.unescape = function() {
       return $(this).html($.unescape($(this).html()));
    }

    /**
     * @param string html - HTML string to unescape.
     * @return string - unescaped HTML string.
     */
    $.unescape = function(html) {
        var htmlNode = document.createElement('div');
        htmlNode.innerHTML = html;
        if (htmlNode.innerText) {
            return htmlNode.innerText; // IE
        }
        return htmlNode.textContent; // FF
    }
})(jQuery);
\int_{}tella
Immagine
Avatar utente
Foto Utentephylum
6.191 5 7 12
G.Master EY
G.Master EY
 
Messaggi: 3217
Iscritto il: 9 ott 2007, 12:40

0
voti

[6] Re: visualizzazione caratteri speciali in textarea

Messaggioda Foto UtenteLelettrico » 23 nov 2010, 22:35

$rows[] = array_map('htmlentities',$r);
e la funzione inversa è html_entity_decode :P

mi risulterebbe anche a me ... :?: :?:
La div la vedo e non la vedo
Codice: Seleziona tutto
var decoded = $("<div/>").html(encodedStr).text();

Qui ...http://stackoverflow.com/questions/1147359/jquery-decode-html-entities
Anche JQuery in mezzo O_/
Avatar utente
Foto UtenteLelettrico
2.458 1 4 6
Master
Master
 
Messaggi: 1108
Iscritto il: 13 set 2010, 12:24

0
voti

[7] Re: visualizzazione caratteri speciali in textarea

Messaggioda Foto UtenteDaniele78 » 23 nov 2010, 23:56

troppo difficili per me.
Sto usando per adesso

function myhtmldecode(str)
{
str=str.replace("&agrave;", "à");
str=str.replace("&egrave;", "è");
str=str.replace("&igrave;", "ì");
str=str.replace("&ograve;", "ò");
str=str.replace("&ugrave;", "ù");

return str;

}

funziona. Non credo però che sia la soluzione migliore.
Avatar utente
Foto UtenteDaniele78
290 2 9
Expert
Expert
 
Messaggi: 288
Iscritto il: 9 set 2008, 23:07

0
voti

[8] Re: visualizzazione caratteri speciali in textarea

Messaggioda Foto Utenteangus » 24 nov 2010, 0:01

Daniele78 ha scritto:Non credo però che sia la soluzione migliore.

decisamente no.

Il "trucco" è che il value di un input non lo devi vedere come HTML, ma TESTO.
ecco che ti torna utile http://api.jquery.com/text/

Un'alternativa, potrebbe essere creare value vuoti e poi popolarli con http://api.jquery.com/attr/
Allunghi la strada, ma dovresti aggirare il problema.
in /dev/null no one can hear you scream
Avatar utente
Foto Utenteangus
8.490 4 6 9
G.Master EY
G.Master EY
 
Messaggi: 4172
Iscritto il: 20 giu 2008, 17:25

0
voti

[9] Re: visualizzazione caratteri speciali in textarea

Messaggioda Foto UtenteDaniele78 » 24 nov 2010, 12:44

Nel manuale jquery c' è scritto che .text() non deve essere utilizzato con gli elementi di input.
Per esclusione rimangono .attr() e .val()
il problema è che non fanno la conversione da html a testo.
Avatar utente
Foto UtenteDaniele78
290 2 9
Expert
Expert
 
Messaggi: 288
Iscritto il: 9 set 2008, 23:07

0
voti

[10] Re: visualizzazione caratteri speciali in textarea

Messaggioda Foto Utenteangus » 24 nov 2010, 12:54

Daniele78 ha scritto:Nel manuale jquery c' è scritto che .text() non deve essere utilizzato con gli elementi di input.

si è vero, ma per fare una cosa diversa... cioè:
...to get the values of form elements...

che non ha niente a che fare con quello che serve a te (se ho capito bene)

Puoi postare il codice che non ti funziona relativo a quello che stai cercando di fare? Io ho fatto delle prove, ma non riesco a replicare il problema...

tanto per parlare di qualcosa di concreto, è questo quello che ti serve? altrimenti modifica di conseguenza...
Codice: Seleziona tutto
<html>
    <head>
        <script type="text/javascript" src="jquery-1.4.4.min.js"></script>

        <script type="text/javascript">
            en="&egrave"
            $(document).ready(function(){
           
                    $('#foo').html('<input id="bar" value="'+en+'"/>');
            });
        </script>

    </head>
    <body>
        <div id="foo"></div>
    </body>
</html>
in /dev/null no one can hear you scream
Avatar utente
Foto Utenteangus
8.490 4 6 9
G.Master EY
G.Master EY
 
Messaggi: 4172
Iscritto il: 20 giu 2008, 17:25

Prossimo

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 8 ospiti