Вопрос по html, field, forms – Как найти дубликаты идентификаторов в форме?

10

Я создал форму, содержащую около 800 полей. Не зная, что я дал один и тот же идентификатор для нескольких полей в форме. Как их отследить?

Notepad ++ или текстовый Wrangler найти и заменить, чтобы изменить их Michael Peterson
Предоставьте больше деталей. В какой форме у вас есть HTML-форма? Jan Hančič
Майкл, я думаю, они хотят найти дубликаты. Поиск / замена работает хорошо, только если вы знаете, что ищете. Joey
быстрое решение:validator.w3.org Simone

Ваш Ответ

6   ответов
2

Источник: поиск дублирующихся идентификаторов на странице HTML

Finding duplicate ID’s on an HTML page

Written by Eneko Alonso on May 6, 2011

Looks like sometimes we forgot element ID’s are meant to be unique on a HTML page. Here is a little bit of code I just wrote to find duplicate ID’s on a page (run the code on your browser’s javascript console):

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);
}
@ Джой, я отредактировал свой ответ, буду иметь в виду, спасибо
Это будет работать, просто отредактируйте его так, чтобы строка,var nodes = document.getElementsByClassName('');, изменено наvar nodes = document.getElementsByTagName('input');
-2

Notepad ++ имеет подсветку синтаксиса, что если дважды щелкнуть одно слово, чтобы выделить его, оно выделит все другие вхождения того же слова. Вам придется выполнить некоторые (вероятно, много) ручные переименования, я имею в виду, поскольку поля не могут иметь свое собственное уникальное имя.

Это будет около 1600 кликов ...
Лучше начать. Он должен иметь представление о том, где находятся дубликаты.
0

которое, если вы устанавливаете, вам просто нужно нажать кнопку, чтобы проверить дублированные идентификаторы. Ссылка установки:https://chrome.google.com/webstore/detail/dup-id-scans-html-for-dup/nggpgolddgjmkjioagggmnmddbgedice

Это будет около 1600 кликов ...
Лучше начать. Он должен иметь представление о том, где находятся дубликаты.
Он также распечатывает все идентификаторы, найденные на странице.
1

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

Регистрирует каждый дубликат и возвращает массив, содержащий идентификаторы, если таковые были найдены.

1

он находит все дубликаты идентификаторов в форме / элементе на странице и печатает имена дубликатов идентификаторов на консоли.

Массивcontains метод был взят изэта почта.

<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>

Приведенный выше код выведет следующее:

Duplicate: a

Duplicate: d

14

http://validator.w3.org/ будет удобным решением. Но используяjquery Вы можете сделать что-то вроде этого:

//See your console for duplicate ids

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

Надеюсь это поможет.

Похожие вопросы