Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [JavaScript] problema con un form. C'è soluzione con JavaScript?

    Ciao a tutti,

    Ho una pagina web con un form con tre campi select. Uno di questi tre campi viene riempito "dinamicamente" in base al contenuto del primo campo (che viene passato dalla pagine precedente). Vi passo il codice della pagina web di nome pagina.php:

    codice:
    <form method="post" action="pagina.php">
    <select name="stabilimento">
    <option>A</option>
    <option>B</option>
    </select>
    <select name="anno">
    <option>2000</option>
    <option>2001</option>
    </select>
    <select name="prodotto">
    
    <?php
    echo "<option>";
    /*
    [...] qui c'è un codice php che scriverà il nome del prodotto associato allo stabilimento scelto. 
    NOTA: la variabile $stabilimento viene passata dalla pagina precedente
    */
    echo "</option>";
    ?>
    
    </select> 
    <input type="submit" name="submit" value="submit">
    </form>
    Io vorrei inserire se possibile un codice Javascript che operi in questo modo:
    1) quando l'utente che visualizza la pagina.php seleziona lo stabilimento
    2) viene levata la selezione corrente di anno e prodotto
    3) vengono inviati i dati del form (stabilimento selezionato dall'utente, anno="" prodotto="")

    E' una cosa fattibile e/o semplice?

    Grazie per il gentile aiuto.
    RiKkArDo on IRCnet

  2. #2
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336
    Se ho capito cosa ti serve....
    codice:
    <select name="stabilimento" onchange="nomeForm.anno.selectedIndex=-1; nomeForm.prodotto.selectedIndex=-1;nomeForm.submit();">
    dove nomeForm è quello specificato in <form name='nomeForm'...>
    Così quando il tuo utente cambia la selezione di stabilimento dovrebbero deselezionarsi le altre due combo e venire inviato in automatico il form...

  3. #3
    grazie per l'aiuto!
    Inserendo il codice da te suggerito ottengo parzialmente ciò che voglio:
    vengono "levate" le selezioni correnti di anno e prodotto ma non viene inviato il submit.

    in realtà nel mio caso il bottone submit è definito in questo modo:

    codice:
    <input type="submit" name="submit" value="form A">
    quindi devo fornire un valore al submit; come modifico il codice?

    RiKkArDo on IRCnet

  4. #4
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336
    :master: Uhmm... non si tratta di dare un valore al pulsante di submit ma di richiamare la funzione submit() dell'oggetto form...
    Dunque, i primi tentativi che mi vengono in mente sono:
    1) cambia name al pulsante (non vorrei che il fatto che si chiami submit dia problemi)
    2) prova con "document.nomeform.submit();"

    ...che errore ti dà il browser? Per esempio IE quando una funzione JS va male mette un triangolo con ! in basso a sinistra, se ci clicchi sopra due volte ti da almeno una minima indicazione, con firefox puoi vedere sotto strumenti la console javascript...

  5. #5
    il pulsante si chiama "submit" ma quando viene cliccato il form passa una variabile submit="form A" alla pagina indicata in action.

    E' essenziale che la variabile ci sia (quindi non posso levare value"form A" quando definisco il submit.

    Ho provato a vedere il tipo di errore: firefox mi dice

    Errore: document.select_manuf_year_week.submit is not a function


    grazie ancora per l'aiuto
    RiKkArDo on IRCnet

  6. #6
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336
    Ok, sembrerebbe proprio quello il problema! Allora, non devi levare il pulsante ma soltanto cambiargli nome:
    codice:
    <input type="submit" name="pippo" value="form A">
    Dalla pagina di gestione dei dati del form potrai continuare a leggerlo ma cercando il parametro pippo..
    Se select_manuf_year_week è il nome del tuo form, facendo select_manuf_year_week.submit() vorresti richiamare la funzione submit del form ma firefox ti dice che submit non è una funzione probabilmente perchè la sta "confondendo" con il pulsante... Cioè, ovviamente sono mie ipotesi però proverei a cambiare il name del pulsante...

  7. #7
    ho provato a cambiare il nome in questo modo

    codice:
    <input type="submit" name="invio" value="form A">
    e mi sembra che funzioni perchè quando vado a modificare 'stabilimento' mentre prima vedevo solo annullarsi le selezioni di anno e prodotto, ora mi si carica una pagina vuota ...

    Spero questo sia dovuto al fatto che la pagina di destinazione del form non riconosce la variabile ora chiamata 'invio' e prima chiamata 'submit'

    ora provo a correggere.

    Tu hai scritto:
    ti dice che submit non è una funzione probabilmente perchè la sta "confondendo" con il pulsante..
    non capisco perchè a dovrebbe confondere. E' quindi sbagliato dare nome submit al submit? (quando scrivo in HTML)
    RiKkArDo on IRCnet

  8. #8
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336
    Non sono un'espertona di javascript quindi forse ti potrà rispondere meglio qualcun altro, ma dopo aver passato le mie buone mezz'ore a diventar matta su script piuttosto semplici per poi scoprire che il problema era il nome di una variabile o di un campo non mi stupisco più di niente! Scherzi a parte, come ti dicevo non conosco troppo bene la teoria ma effettivamente quel che ho capito è che:
    1)meglio evitare i nomi già utilizzati dall'HTML (name, action, button, submit, method, ...)
    2)come accedi alla select scrivendo nomeform.stabilimento, così potresti accedere al pulsante scrivendo nomeform.submit... ma nomeform.submit() è un'altra sintassi valida (vuoi richiamare la funzione submit), quindi ci possono essere problemi di "omonimia" del tipo che il browser conosce il campo submit e riferisce l'istruzione a quello...
    3)meglio provare con più browser: non mi stupirei se con un altro browser non avessi avuto problemi...
    Insomma, non è granchè come spiegazione ma per ora accontentati, spero rimedi qualcun altro...

  9. #9
    ti ringrazio per i super utili consigli.

    un'ultima cosa:

    io ho la necessità di inviare una variabile chiamata "invio" con un determinato valore: "Form A".

    la soluzione che mi pareva idone a tale scopo era questa

    codice:
    <input type="submit" name="invio" value="Form A"
    quindi per poter far sì che nel momento in cui l'utente cambia il valore dello stabilimento oltre a 'cancellare' il contenuto di anno e prodotto vorrei inviare alla pagina di destinazione anche una variabile di nome "invio" con il valore "Form A".

    Ho provato ad aggiungere il comando nomeform.invio.value="Form A"; nella madifica da te suggerita ottenendo:

    codice:
    onchange="nomeForm.anno.selectedIndex=-1; nomeForm.prodotto.selectedIndex=-1;nomeform.invio.value="Form A";nomeForm.submit();"
    ma ottengo questo errore:

    Errore: syntax error
    Codice sorgente:
    select_manuf_year_week.anno.selectedIndex=-1; select_manuf_year_week.prodotto.selectedIndex=-1;select_manuf_year_week.invio.value=


    hai idea di dove sbaglio?
    RiKkArDo on IRCnet

  10. #10
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336
    Uhmm.... apici singoli invece dei doppi?
    codice:
    nomeform.invio.value='Form A'
    Inoltre, hai provato senza questa istruzione e la variabile non arriva? Te lo chiedo perchè onestamente pensavo che un bottone fosse praticamente come un campo di testo per cui se lo inizializzi con la riga:
    codice:
    <input type="submit" name="invio" value="Form A">
    dovrebbe (almeno questo è quello che credevo ma non ne sono sicura) già passare normalmente come parametro...a meno che tu non ne voglia cambiare il valore... Nel qual caso forse ti consiglierei un campo hidden, mi sembra più pulito cambiare il valroe di un campo nascosto piuttosto che di un pulsante...

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.