2012-07-26 19 views
9

He creado un formulario con aproximadamente 800 campos en él. Sin saberlo, he dado el mismo id para algunos campos en el formulario. Cómo rastrearlos?¿Cómo encontrar identificaciones duplicadas en un formulario?

+7

solución rápida: http://validator.w3.org/ – Simone

+0

Proporcione más detalles. ¿De qué forma tienes tu formulario HTML? –

+0

bloc de notas ++ o texto Wrangler encontrar y reemplazar para cambiarlos –

Respuesta

13

El http://validator.w3.org/ será la solución ideal. Pero el uso de jQuery que puede hacer algo como esto:

//See your console for duplicate ids 

$('[id]').each(function(){ 
    var id = $('[id="'+this.id+'"]'); 
    if(id.length>1 && id[0]==this) { 
    console.log('Duplicate id '+this.id); 
    alert('duplicate found'); 
    } 
}); 

Espero que esto ayude.

2

Esto podría ayudarle a

Source: Finding duplicate ID’s on an HTML page

Encontrar de duplicados de identificación en una página HTML

Escrito por Eneko Alonso el 6 de mayo 2011

Parece que a veces nos olvidamos de ID de elemento están destinados a ser únicos en una página HTML. Aquí está un poco de código que acaba de escribió para encontrar de duplicados de identificación en una página (ejecutar el código en la consola JavaScript de su navegador ):

var idList = {}; 
var nodes = document.getElementsByClassName(''); 
for (var i in nodes) { 
    if (!isNaN(i) && nodes[i].id) { 
    idList[nodes[i].id] = idList[nodes[i].id]? idList[nodes[i].id]+1:1; 
    } 
} 
for (var id in idList) { 
    if (idList[id] > 1) console.log("Duplicate id: #" + id); 
} 
+0

Esto funcionará solo edítelo para que la línea, 'var nodes = document.getElementsByClassName (''); ', se cambia a' var nodes = document.getElementsByTagName ('input'); ' –

+0

@Joey He editado mi respuesta, lo tendré en cuenta gracias – Christos312

-2

Por defualt Notepad++ tiene resaltado de sintaxis que si se hace doble clic una palabra para seleccionarla, resaltará todas las demás ocurrencias de la misma palabra. Tendrás que hacer algo (probablemente mucho) de trabajo manual para cambiar el nombre de las cosas, quiero decir, ya que los campos no pueden dar con su propio nombre único.

+0

Eso sería alrededor de 1600 clics. .. – Joey

+0

Mejor comienzo. Debe tener alguna idea de dónde están los duplicados. –

1

He creado un ejemplo para que usted pueda ver, encuentra todos los ID duplicados dentro de un formulario/elemento en una página e imprime los nombres duplicados de ID en la consola.

El método de matriz contains fue tomado de this post.

<html> 
    <body> 
     <form id="frm"> 
      <input type="text" id="a" /> 
      <input type="text" id="b" /> 
      <input type="text" id="c" /> 
      <input type="text" id="d" /> 
      <input type="text" id="e" /> 
      <input type="text" id="f" /> 
      <input type="text" id="a" /> 
      <input type="text" id="h" /> 
      <input type="text" id="i" /> 
      <input type="text" id="j" /> 
      <input type="text" id="d" /> 
      <input type="text" id="l" />    
     </form> 
    </body> 
    <script type="text/javascript"> 
     Array.prototype.contains = function(obj) { //Add a 'contains' method to arrays 
      var i = this.length; 
      while (i--) { 
       if (this[i] === obj) { 
        return true; 
       } 
      } 
      return false; 
     } 

     frm = document.getElementById('frm'); //Get the form 
     els = frm.getElementsByTagName('input'); //Get all inputs within the form 

     ids = new Array(els.length); //Create an array to hold the IDs 

     for(e = 0; e < els.length; e++) { //Loop through all of the elements 
      if(ids.contains(els[e].id)) //If teh array already contains the ID we are on 
       console.log('Duplicate: '+els[e].id); //Print 'Duplicate: {ID}' to the console 

      ids.push(els[e].id); //Add the ID to the array 
     } 

    </script> 
</html> 

El código anterior es la salida siguiente:

duplicado: un

duplicado: d

1
liner

One-ish utilizando sólo métodos matriz:

[].map.call(document.querySelectorAll("[id]"), 
    function (e) { 
     return e.id; 
    }).filter(function(e,i,a) { 
     return ((a.lastIndexOf(e) !== i) && !console.log(e)); 
    }) 

Registra cada duplicado y devuelve una matriz que contiene los identificadores si se encontró alguno.

Cuestiones relacionadas