Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684

    form e controllo - oggetto è nullo o non è oggetto

    Ho un form con metodo 'post'
    al submit assegno l'evento 'onClick' richiamando la funzione 'inviaOrdine'
    Mi resituisce il seguente errore:
    'nome.value' è nullo o non è un oggetto

    codice:
    function inviaOrdine(controllo){
    var controlloNome = controllo.nome.value;
    
    if (controlloNome == ""){
    alert('Devi inserire il nome!');
    controllo.nome.focus();
    return false;
    }
    else {
    	var rv
    	rv = confirm('Cliccando su OK invii l\'ordine definitivamente!');
    	if (rv) controllo.form.action=('invioOrdine.asp');
    	return rv;
    	}
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Bhè, che ti aspetti? Che dovrebbe essere "nome" e che dovrebbe essere "controllo"?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    Scusami, non mastico bene javascript, cosa intendi?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    TRamite il submit richiamo la funzione:

    codice:
    <input type="submit" name="ordineok" value="INVIA ORDINE" class="pulsanteInviaOrdine" onClick="return inviaOrdine(this);">

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    facciam prima: posta il form
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    ok, quel "this" sta a significare "pulsante di submit", ergo la funzione chiama "controllo" il tuo pulsante di submit e prova a recuperare un fatidico attributo chiamato "nome" del pulsante di submit che chiaramente non esiste.... che cosa vorresti ottenere?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    Premetto che il form è dinamico, quindi lo creo tramite un linguaggio server side "ASP".
    Ora ti riscrivo il form, omettendo le parti dinamiche...

    codice:
    <form id="carrello" method="post" class="form">
    ... parte server side
    'AVVISO SE L'UTENTE NON HA EFFETTUATO IL LOGIN
    'tramite messaggio
    ...
    NOME E COGNOME <input type="text" name="nome">
    VIA <input type="text" name="via"
    CAP <input type="text" name="cap">
    PAESE <input type="text" name="paese">
    PROVINCIA
    <select name="provincia">
    ...
    </select>
    TELEFONO DI CONTATTO <input type="text" name="telefono">
    EMAIL <input type="text" name="email"> (facoltativa)
    INDICAZIONI VARIE
    <textarea name="indicazioni"></textarea>
    <input type="submit" name="ordineok" value=""INVIA ORDINE" onClick="return inviaOrdine(this);">
    </form>
    E? stato semplificato al massimo omettendo anche i tag di impaginazione.

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    I controlli sull'invio del form vanno effettuati sull'evento onsubmit associato al form stesso e non sull'onclick del pulsante submit.

    <form ... onsubmit="return controlli(this)">
    ...
    <input type="submit">
    </form>

    ciao

    Edit: se si adotta la sintassi indicata da Andrea1979 il form verra' inviato qualunque sia l'esito dei controlli, dato che il valore di ritorno della funzione non influisce sul flusso degli eventi.
    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

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Hai due opzioni: lasci la chiamata alla funzione javascript all'onclick del submit, e modifichi con:

    codice:
    onclick="return inviaOrdine(this.form);"
    Oppure la metti all'onsubmit del tag form e la lasci così com'è:
    codice:
    <form id="carrello" method="post" class="form" onsubmit="return inviaOrdine(this);">
    Così siamo sicuri che stiamo lavorando sul form nella funzione javascript e non su un bottone o altro elemento.

    A questo punto dovrebbe funzionare, visto che controllo sarà il riferimento al form e il form contiene effettivamente un input di nome "nome" etc etc
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    Credo che questa soluzione sia ideale:
    onclick="return inviaOrdine(this.form);"


    infatti ho delle select "sensibili" all'onSubmit, per il refresh automatico del form: sarebbe un pò dannoso fare il controllo ad ogni submit, preferisco fare il controllo solo all'onClick del pulsante "invia ordine".

    Può andare bene?

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.