Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di atenea
    Registrato dal
    May 2009
    Messaggi
    82

    Evitare campi form con stesso valore

    Ciao a tutti,
    ho un piccolo problema. Ho un form per creare documenti di vendita in cui aggiungo dinamicamente dei campi per l'inserimento di articoli da vendere (sono campi input text).

    Il mio problema è che vorrei evitare l'inserimento di articoli duplicati in modo da non generare errore durante l'inserimento nel database.

    Avete qualche suggerimento? magari per visualizzare un all'alert nel momento in cui un campo assume un valore già inserito nel form?

    Grazie per l'aiuto che mi darete.
    ^_^

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma il valore da controllare dov'è? In altro campo del form o nel database?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it L'avatar di atenea
    Registrato dal
    May 2009
    Messaggi
    82
    in un altro campo. Io prima faccio compilare all'utente tutto il formo poi procedo con la creazione del documento e l'inserimento dei dati nel database è per questo che voglio controllare prima i valori dei form.

    gli id delle input text sono tutti del tipo codice* dove * sta per un carattere arbitrario, mentre l'attributo name è codice[] per tutte.
    ^_^

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Esegui un ciclo for sui campi input text tipo:
    codice:
    function ckInput(campo){
    var el = document.getElementsByTagName('input');
    for(var i=0; i<el.length; i++){
    if(el[i].type=='text' && el[i].value==campo.value){
    alert('valori dupplicati non ammessi');
    campo.value="";
    return false;
    }
    }
    }
    <input type="text" name="tuo_name" id="tuo_id" onblur="ckInput(this)" />
    non l'ho testato, comunque la starda è questa.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Mi permetto di suggerire una piccola modifica alla if:

    codice:
     if(el[i].type=='text' && el[i].value==campo.value && el[i].id != campo.id && el[i].value != ''){
    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  6. #6
    Utente di HTML.it L'avatar di atenea
    Registrato dal
    May 2009
    Messaggi
    82
    Grazie dei consigli. Ora provo.
    ^_^

  7. #7
    Utente di HTML.it L'avatar di atenea
    Registrato dal
    May 2009
    Messaggi
    82
    ho fatto una piccola modifica ed ecco il risultato

    codice:
     
    <script>
    function ckInput(campo){
                  var el = $('input[id^="codice"]'); // funzione jQuery selettore Start With
                  for(var i = 0;el.length;i++){
                      if(el[i].value == campo.value && el[i].id != campo.id && el[i].value != ""){
                          alert("valori dupplicati non ammessi");
                          campo.value ="";
                          return false;
                      }
                  }
              }
    function doppioni(){
                  var el = $('input[id^="codice"]');
                  for (var i = 0;el.length;i++){
                      if(!ckInput(el[i])) return false;
                  }
              }
    </script>
    
    <input type="submit" name="azione" value="Crea preventivo" onclick="return doppioni()"/>
    il controllo viene fatto ed effettivamente mi avvisa che ci sono dei doppioni ma cmq viene attivato lo script lato server e quindi mi genera errore quando inserisce i dati del database in quanto effettivamente si ritrova con una chiave duplicata.

    Come posso impedire che venga eseguito lo script lato server se vengono trovati dei doppioni?
    ^_^

  8. #8
    Utente di HTML.it L'avatar di atenea
    Registrato dal
    May 2009
    Messaggi
    82

    Illusione

    In realtà non funziona tanto bene, in quanto sembra che alla funzione ckInput viene passato un elemento indefinito quindi non riesce ad estrarne il valore.. come posso risolvere? avete qualche idea?
    ^_^

  9. #9
    Utente di HTML.it L'avatar di atenea
    Registrato dal
    May 2009
    Messaggi
    82

    SOLUZIONE

    Ecco la soluzione:
    codice:
    function ckInput(campo){
    for(var i = 0;i<$('[id^="codice"]').length;i++)
        var el = $('[id^="codice"]')[i];
          if(el.value == campo.value && el.id != campo.id && el.value != ""){
              return false;
          }else {return true;}
    }
    function doppioni(){
        for(var i = 0;i<$('[id^="codice"]').length;i++){
            var el = $('[id^="codice"]')[i];
            if (el.value != ""){
              if(!ckInput(el)) {alert("Ci sono ripetizioni negli articoli inseriti"); return false;}
            }else {return false;}
          return true;
        }
    }
    la funzione viene poi associata all'evento onsubmit del form
    ^_^

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.