Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Script che non gira

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    143

    Script che non gira

    Buongiorno ragazzi avrei bisogno del vostro aiuto ho realizzato il seguente script:

    function invia() {
    var testo=document.mylink.testo.value;
    var linkTesto=document.mylink.linkTesto.value;
    var maschera=document.mylink.maschera.value.replace(/'/g,"\\'");
    var maschera=document.mylink.maschera.value.replace(/"/g,"\\"");
    if (testo=="" || linkTesto=="" || maschera=="") {
    alert("I campi sono tutti obbligatori.");
    return false;
    }
    var i=new RegExp("([a-zA-Z\ ]{2,})");
    if(testo.value!=i) { alert("Il campo testo link non è valido."); return false}

    var retValue="<a class='bi' onClick=\"JavaScript:winOpTxt('"+maschera+"','"+li nkTesto+"')\" href=\"JavaScript:void(0)\">"+testo+"</a>

    ";
    window.returnValue = retValue;
    window.close();
    }

    function window_onload() {
    window.returnValue = "";
    }


    <body LANGUAGE="javascript" onload="return window_onload()">

    <input name="inserisci" type="button" value="Inserisci" onClick="return invia();">

    ma quando verifica la RegExp mi da sempre alert "Il campo testo link non è valido" dove sbaglio ??

    1000 grazie a chi mi possa dare una mano.
    Gennaro

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non puoi confrontare un oggetto RegExp con una stringa. Alla Regexp puoi applicare il metodo test, per verificare che uan stringa segua la regexp:

    var i=new RegExp("([a-zA-Z\ ]{2,})");
    if(i.test(testo.value)) { alert("Il campo testo link non è valido."); return false}

    o forse vuoi fare il contrario:
    var i=new RegExp("([a-zA-Z\ ]{2,})");
    if(!i.test(testo.value)) { alert("Il campo testo link non è valido."); return false}


    Inoltre ci sono errori nelle prime RegExp (mancano delle backslash):
    codice:
    var maschera = document.mylink.maschera.value.replace(/\'/g,"\'");
    var maschera = document.mylink.maschera.value.replace(/\"/g,"\\\"");
    Ho notato che il form si mangia qualcosa: ripeto cosa c'e` dentro le tonde:
    slash backslash apice slash g virgola virgolette backslash apice virgolette

    slash backslash virgolette slash g virgola virgolette backslash backslash backslash virgolette virgolette

    Quest'ultimo si puo` anche scrivere:
    slash backslash virgolette slash g virgola apice backslash virgolette apice


    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    143
    Rieccomi di nuovo allora Mich_ mi dicevi che ci sono errori nelle prime RegExp (mancano delle backslash) infatti: pero' ho notato che la seconda replace mi annulla la prima
    codice:
    var maschera=document.mylink.maschera.value.replace(/'/g,"\\'"); 	var maschera=document.mylink.maschera.value.replace(/\"/g,"\\\&quot;");
    cioe' la prima replace non aggiunge il \ prima dell'apice quando e' seguita dalla seconda replace da sola funziona perfettamente perche'??

    grazie per il tuo intervento.
    Gennaro

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    A parte la questione backslash (che regolarmente il forum se ne mangia qualcuna, per cui e` difficile commentare), c'e` un piccolo problema di logica.

    Tu stai lavorando con due oggetti: un campo e una varibile.
    Il campo e` document.mylink.maschera.value
    La variabile e`
    maschera

    Nel tuo script, nella seconda istruzione riprendi quanto contenuto nel campo ed applichi la RE: ecco perche` ti perdi la prima sostituzione.

    Quello che volevi fare si potrebbe (forse) scrivere:

    var maschera = document.mylink.maschera.value;
    maschera = maschera.replace(/\'/g ...;
    maschera = maschera.replace(/\"/g ...;
    document.mylink.maschera.value = maschera;

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    143
    Mich_ ti ringrazio per il tuo enorme contributo adesso le replace tutto OK, ma ho ancora problemi sulla
    codice:
    var i=new RegExp("([a-zA-Z]{2,})"); 
    if(!i.test(linkTesto.value)) { alert("Il campo titolo della monografia non è valido."); return false}
    questa RegExp dovrebbe inibire tutti i caratteri diversi dall'alfabeto attualmente non mi da niente non mi pensa proprio.

    Perche' ancora grazie
    Gennaro

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ora non ho presente tutto lo script (potrebbe essere cambiato), ma ti do` la sintassi corretta:

    RegExp.test(varstringa)
    ritorna vero o falso

    Tu al posto della stringa ci hai messo linkTesto.value, ma linkTesto e` gia` una stringa, quindi non puoi applicarci .value (che estrae la stringa da un campo di un form).

    Per altre info puoi vedere:
    http://developer.netscape.com/docs/m...sref/index.htm
    alla voce core > RegExp

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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 © 2024 vBulletin Solutions, Inc. All rights reserved.