Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di renzoz
    Registrato dal
    May 2001
    Messaggi
    305

    Problema di controllo campi su form multipli

    Spiego meglio, ho un catalogo in php con N form (generati da un ciclo), uno per ogni articolo che servono ad inserire gli articoli nel carrello:

    <form method="post" name="adcart" action="addcart.php">
    <input type="hidden" name="prod" value="20">
    <input class="fqta" type="text" name="qta" size="1" maxlength="3">
    <input type="image" src="imgs/cart.gif" alt="Aggiungi al carrello" onClick='return controlla_dati();'>
    </form>

    <form method="post" name="adcart" action="addcart.php">
    <input type="hidden" name="prod" value="21">
    <input class="fqta" type="text" name="qta" size="1" maxlength="3">
    <input type="image" src="imgs/cart.gif" alt="Aggiungi al carrello" onClick='return controlla_dati();'>
    </form>

    <form method="post" name="adcart" action="addcart.php">
    <input type="hidden" name="prod" value="22">
    <input class="fqta" type="text" name="qta" size="1" maxlength="3">
    <input type="image" src="imgs/cart.gif" alt="Aggiungi al carrello" onClick='return controlla_dati();'>
    </form>

    ecc...

    ora io vorrei che al submit del form selezionato venisse eseguito un controllo in modo che il campo qta non sia vuoto e non contenga zeri, per questo ho messo questo js:

    <script language="javascript">
    <!--
    function controlla_dati()
    {
    var jqta = document.adcart.elements["qta[]"].value ;

    if((jqta == "0") || (jqta == ""))
    {
    alert("Inserire la quantità richiesta per questo articolo.");
    return false;
    }

    }

    -->
    </script>

    ma non funziona probabilmente perchè ci sono N form tutti nominati uguali... qualcuno sa darmi una dritta in merito?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Se i form hanno lo stesso nome ottieni una collezione di form e dovresti specificare l'indice del form interessato.
    Ti conviene passare il form alla funzione
    codice:
    onClick='return controlla_dati(this.form);'
    e naturalmente modificare la funzione così
    codice:
    function controlla_dati(ff) 
    {
    var jqta = ff.elements["qta[]"].value ;
    
    if((jqta == "0") || (jqta == ""))
    { 
    alert("Inserire la quantità richiesta per questo articolo.");
    return false;
    }
    
    }

  3. #3
    Utente di HTML.it L'avatar di renzoz
    Registrato dal
    May 2001
    Messaggi
    305
    Grazie mille willybit, funzia alla perfezione

    Per chi fosse interessato a questa soluzione preciso che il codice js corretto (senza le parentesi quadre sulla var qta) è questo:

    function controlla_dati(ff)
    {
    var jqta = ff.elements.["qta"] .value ;

    if((jqta == "0") || (jqta == ""))
    {
    alert("Inserire la quantità richiesta per questo articolo.");
    return false;
    }

    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    58
    Salve, ho provato il codice riporatato in questa discussione per lo stesso utilizzo, ma non funziona, probabilmente devo modificare qualcosa ma non so cosa.

    sul form:

    onClick='return controlla_dati(this.form);'

    e nel codice:

    function controlla_dati(ff)
    {
    var jqta = ff.elements["qta"].value ;

    if((jqta == "0") || (jqta == ""))
    {
    alert("Inserire la quantità richiesta per questo articolo.");
    return false;
    }
    return true;
    }


    Potete aiutarmi?
    grazie

  5. #5
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    posta l'html del form

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    58
    ho un elenco con tanti form generati dinamicamente:

    <form action="<%=MM_editAction%>" method="POST" name="form1" onSubmit="javaScript:return controlla_dati(this.form);">
    <input name="ordine" type="text" id="ordine" value="<%=(RS.Fields.Item("ordine").Value)%>" size="5">
    <input type="submit" name="Submit" value="Invia">
    </form>

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    58
    nello script


    function controlla_dati(ff)
    {
    var jqta = ff.elements.["ordine"].value ;

    if((jqta == "0") || (jqta == ""))
    {
    alert("Inserire un numero.");
    return false;
    }
    return true;
    }

  8. #8
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    scusa se rispondo solo adesso ma sono stato impegnato (è sempre pesante il lunedì)...

    codice:
    <form action="<%=MM_editAction%>" method="POST" name="form1" onSubmit="return controlla_dati(this);">
    <input name="ordine" type="text" id="ordine" value="<%=(RS.Fields.Item("ordine").Value)%>" size="5">
    <input type="submit" name="Submit" value="Invia">
    </form>
    e la funzione
    codice:
    function controlla_dati(ff) 
    {
    var jqta = ff.elements["ordine"].value ;
    if(isNaN(jqta) || jqta == "0" || jqta == "")
    { 
    alert("Inserire un numero.");
    return false;
    }
    return true;
    }

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    58
    mi dà sempre lo stesso errore:


    elements.ordine.value è nullo o non è un oggetto

  10. #10
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    allora ci deve essere qualcos'altro.... questo esempio (fatto dalle tue indicazioni) funziona
    codice:
    <script language="JavaScript">
    function controlla_dati(ff){
      var jqta = ff.elements["ordine"].value ;
      if(isNaN(jqta) || jqta == "0" || jqta == ""){ 
        alert("Inserire un numero.");
        return false;
      }
      return true;
    }
    </script>
    <form method="POST" name="form1" onSubmit="return controlla_dati(this);">
    <input name="ordine" type="text" id="ordine" value="" size="5">
    <input type="submit" name="Submit" value="Invia">
    </form>
    <form method="POST" name="form1" onSubmit="return controlla_dati(this);">
    <input name="ordine" type="text" id="ordine" value="" size="5">
    <input type="submit" name="Submit" value="Invia">
    </form>
    <form method="POST" name="form1" onSubmit="return controlla_dati(this);">
    <input name="ordine" type="text" id="ordine" value="" size="5">
    <input type="submit" name="Submit" value="Invia">
    </form>
    hai qualcosa online da vedere?

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.