procedi per esclusione

nella funzione di validazione piazza un alert prima di ogni macroblocco, ad esempio prima del for esterno, al termine del for, ecc ecc... se metti ad esempio 5 alert e ne vedi uscire solo 3 allora l'errore si trova (presumibilmente) tra il terzo ed il quarto alert.

In alternativa posta un link per vedere la pagina

p.s.: per caso lasci dei campi BPT_... vuoti o no? Ad ogni modo dovrebbe funzionare lo stesso, inatti questo funziona

codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="it" xml:lang="it">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="Author" 
          content="Fabrizio Calderan, http://www.fabriziocalderan.it/" />
        
        <title></title>
    </head>

<body>

    <script>
    function check(f) {
    
      var namePattern = /^bpt_/;
      var nameFields = {};
      
      var fields = f.getElementsByTagName('input');
      for (var i=0; i<fields.length; i++) {
            if (namePattern.test(fields[i].name)){
                if fields[i].value != '') {
                    if (fields[i].value in nameFields) {
                        alert([fields[i].value, ' è un valore ripetuto.'].join(' '));
                        return false;
                    } 
                    nameFields[fields[i].value] = fields[i].name; 
                }
            }
      }
      
      return true;
    
    }
    
    </script>

</body>

<form action="#" onsubmit="return check(this)">
  <input type="text" name="bpt_3" value="">

  <input type="text" name="bpt_1" value="123">

  <input type="text" name="bpt_2" value="123">

  <input type="submit" />
</html>



:master: