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

    Attivare più form con la stessa funzione javascript

    Salve a tutti

    (Percorso: root/user/account.php )
    ----------Il codice che ho scritto è:

    ////// loop che mi crea 5 form
    <?php for ($ref=$VALORECRITICO; $ref <= 5; $ref++) {?>

    <?php
    ////// variabili del loop che diventano i nomi dei form
    $boxsing = "box".$ref."sing";
    $boxmult = "box".$ref."mult"; ?>

    <form name="<?php echo $boxsing;?>" method="POST">
    <input type="hidden" value="<?php echo $ref;?>" name="numproduct">

    Valore singolo:
    <input type="text" name="offer">
    /////// div che mi permette di creare un bottone con effetto onmouseover
    <div class="offrisoff" onMouseOver="this.className='offrison'" onMouseout="this.className='offrisoff'"
    onClick="validateFormOfferOnSubmit(<?php echo $boxsing;?>)">Bottone di invio</div></form>
    </div>
    <?php } ?>

    (Percorso: root/funzioni/controlloformoffer.php )
    ---------mentre la funzione javascript è:

    function validateFormOfferOnSubmit(theForm) {
    var reason = "";
    reason += validateoffer(theForm.offer);
    if (reason != "") {
    alert("Alcuni campi non sono stati compilati correttamente:\n" + reason);
    return false;
    }
    else {
    alert("3");
    if (theForm==box1sing) {document.box1sing.action = "../user/offers.php"; document.box1sing.submit();}
    else if (theForm==box2sing) {document.box2sing.action = "../user/offers.php"; document.box2sing.submit();}
    else if (theForm==box3sing) {document.box3sing.action = "../user/offers.php"; document.box3sing.submit();}
    else if (theForm==box4sing) {document.box4sing.action = "../user/offers.php"; document.box4sing.submit();}
    else if (theForm==box5sing) {document.box5sing.action = "../user/offers.php"; document.box5sing.submit();}
    }}

    function validateoffer(fld) {
    var error = "";
    var tfld = trim(fld.value);
    var illegalChars = /[^0-9]/ ;

    if (fld.value == "") {
    fld.style.background = 'Yellow';
    error = "Campo vuoto.\n";
    } else if (fld.value.match(illegalChars)) {
    fld.style.background = 'Yellow';
    error = "Il valore immesso non è consentito.\n";
    } else {
    fld.style.background = '#EEFFFF';
    }
    return error;
    }
    </script>

    Il mio grosso problema è che se $VALORECRITICO = 1 tutto funziona perfettamente,
    ma se lo metto uguale a 2 o più
    il codice non funziona più (funziona fino all'alert 3 ma poi non invia il modulo!!!)
    Forse c'è un problema di collegamento tra js e php che non vedo, ma sono tre giorni che ci impazzisco!!!
    Qualcuno saprebbe dirmi perchè non funziona?
    Grazie mille

    (P.S. c'è un modo per evitare l'if-else mettendo una variabile nelle espressioni:
    document.VARIABILE.action = "../user/offers.php";
    document.VARIABILE.submit();
    Si può fare? e se sì come?)

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Considera il fatto che per me il codice PHP che hai postato risulta illeggibile (non conosco PHP) dovresti postare il codice come lo riceve il browser o, meglio, fornire il link alla pagina pubblicata.

    Poi in generale per usare le stesse funzioni con diversi oggetti si usa il paramtro this nell'evento chiamante, che fornisce un riferimento all'oggetto stesso, da li poi si ricavano eventuali field interni....

    Per quel che riguarda l'usare una variabile puoi adottare la sintassi:

    document.forms["nomeDelForm"]
    oppure
    document.forms[numeroindice]

    e cosi' per gli elementi interni

    document.forms["nomeDelForm"].elements["nomeDelCampo]

    o una combinazione....

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Considera il fatto che per me il codice PHP che hai postato risulta illeggibile (non conosco PHP) dovresti postare il codice come lo riceve il browser o, meglio, fornire il link alla pagina pubblicata.
    per questo non so che posso dirti

    Poi in generale per usare le stesse funzioni con diversi oggetti si usa il paramtro this nell'evento chiamante, che fornisce un riferimento all'oggetto stesso, da li poi si ricavano eventuali field interni....
    il problema è che la funz. js è chiamata in un div, non credo quindi che this si possa riferire al form!!

    Per quel che riguarda l'usare una variabile puoi adottare la sintassi:

    document.forms["nomeDelForm"]
    oppure
    document.forms[numeroindice]

    e cosi' per gli elementi interni

    document.forms["nomeDelForm"].elements["nomeDelCampo]

    o una combinazione....

    ciao
    questo lo provo subito
    grazie

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.