Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Mozilla conta i caratteri in modo diverso da IE?

    Ciao ragazzi.
    Ho messo un contatore di caratteri in una textarea.

    Testando il tutto su IE 6 e su Firefox Mozilla (su WindowsXP) ho notato che il medesimo testo viene valutato di lunghezza diversa.

    E' un problema noto?

    Perchè a livello di limite di campo nel DB il conteggio di IE risulta esatto, mentre Mozilla a quanto pare 'sottostima' la lunghezza del testo, dando quindi errore quando inseriscono più caratteri.

  2. #2
    questo è quello che ho usato:


    |----------- parte del css usato nella pagina -----|
    /* inserito da file esterno in head */

    .red {
    color : red;
    font-weight: bold;
    font-size: 11px;
    vertical-align: top;
    border-bottom: 1px solid #A9A9A9;
    border-top: 1px solid #DCDCDC;
    }
    .impghost {
    background-color : #EAEAEA;
    text-align : right;
    border-bottom: 1px solid Gray;
    border-top: 1px solid #A9A9A9;
    }
    |----------- fine css ----------------------------------------|

    |----------- Script usato ---------------------------------|

    //inserito da file esterno in head

    function maxC (campo, mis, counter) {
    var f = campo.form;
    var conta = counter;

    f.elements[conta].value = campo.value.length;

    if (campo.value.length > mis) {

    f.elements[conta].className="red";

    } else if (campo.value.length <= mis) {

    f.elements[conta].className="impghost";
    }
    }


    |----------- Fine Script -----------------------------------|

    |------------ Parte del form interessata -------------|

    <TEXTAREA NAME="Note_note" COLS="90" ROWS="20"
    title="Commenti e/o suggerimenti"
    onKeyUp="maxC(this, 3000, 'Note_count');"
    onBlur="maxC(this, 3000, 'Note_count');"
    onMouseOver="maxC(this, 3000, 'Note_count');"
    onMouseOut="maxC(this, 3000, 'Note_count');" >
    </TEXTAREA>

    <INPUT TYPE=TEXT NAME="Note_count" VALUE="" SIZE=5
    class="impghost" onFocus=blur();>

    |-------------- fine parte form ---------------------------|

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    La cosa e` strana, ma ti chiederei di valutare se ci sono dei caratteri che vangono contati in modo diverso.

    I caratteri che potrebbero dare problemi sono (a mio modo di vedere):
    tab
    spazi
    acapo

    Dovresti controllare se ad ogni pressione di uno di questi tasti, viene incrementato il contatore di uno o di piu` di uno.

    Per il carattere acapo anche la piattaforma e il sistema operativo potrebbero fare la differenza.

    Dovresti anche dire quale database usi e sotto che sistema operativo/piattaforma.

    Esempo: il carattere acapo (return, enter) viene rappresentato:
    codice:
    \n   <lf>     in unix/linux
    \r   <cr>     in mac
    \r\n <cr><lf> in windows
    Il tab in alcuni sistemi potrebbe essere sviluppato in un certo numero di spazi in modo da arrivare alla posizione corretta.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  4. #4
    'cipicchia!
    non credevo ci fossero tante complicazioni

    Comunque l'esempio online si trova qui:

    Prova counter

    il sysop del server dovrebbe essere un windows2000 server.. per ora, on line, non è collegato al db (SqlServer di sicuro).
    Ma la cosa che mi lasciava dubbi era che anche solo provando un semplice testo mi faceva la differenza del conto.

    Penso che il problema siano i newline: sembra che visto da IE calcoli il newline come 2 caratteri se si lascia la linea vuota e uno se si va a capo col testo.

    Sembra invece che Mozilla non tenga conto degli 'a capo'.
    Il guaio che per il db anche il newline è un carattere.

    Non saprei come ovviare al problema. Metà delle persone che conosco usano Firefox Moz

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Anzitutto verifica come e` fatta la textarea.

    Perche` a volte la textarea stessa puo` inserire dei caratteri acapo quando arriva a fine riga.

    In HTML2 c'era un attributo che inseriva degli acapo a seconda del suo valore.
    Ora non ricordo piu` che attributo era, e neppure quali valori esattamente avesse (pero` uno era "wrap").

    Forse sul sito di MSDN trovi ancora tale attributo (nei manuali che consulto ora non e` piu` riportato): potrebbe essere che IE ha ancora tale attributo e puoi fare in modo che si comporti come Mozilla.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    peccato che a me serva che mi conti i newline come caratteri :-(

  7. #7
    Lo script che segue è stato modificato per far in modo che explorer conti i caratteri della textarea e modifichi la 'formattazione' del suo contenuto come se fosse visto da Mozilla.

    function maxC (campo, mis, counter) {
    var f = campo.form;
    var conta = counter;
    var testo = campo.value;

    if (testo.search(/newline/) == "-1") {
    RE = /\r\n/g;
    var testoMod = testo.replace(RE,"\n")

    //alert(testoMod.length + testoMod);
    }

    f.elements[conta].value = testoMod.length;

    if (testoMod.length > mis) {

    f.elements[conta].className="rosso";

    } else if (testoMod.length <= mis) {

    f.elements[conta].className="grigio";
    }

    f.elements[campo.name].value = testoMod;

    }
    Il problema è che una volta inviato il dato al database (db2 da me in locale), risulta più lungo per via dei newline ignorando i miei sforzi di renderlo 'diverso'.

    Come faccio a far contare anche a mozilla i newline come caratteri?

    ps. ho usato una regexp, ma non ho un'idea molto chiara sul loro uso.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.