/ / Намиране дали има дублиращ се атрибут на име - javascript, jquery

Намиране на атрибут за дублиране на име - javascript, jquery

Нека кажем, че имам следното;

<input type="text" id="1" name="1" value="" />
<input type="text" id="2" name="2" value="" />
<input type="text" id="3" name="3" value="" />
<input type="text" id="4" name="2" value="" />

Опитвам се да има функция, която ще може да разбере дали има атрибут със същото име.

Така че за този пример, червен флаг ще излезе това id="4" има атрибут на дублиращо име.

Знам, че трябва да направя нещо подобно, но тук може би бия около храста. Какво мислите?

function findDuplicates(name) {
var found = 0;

$("input").each(function() {
if($(this).attr("name") == name)
found++;
});

return found;
}

Отговори:

4 за отговор № 1

Опитайте селектора на атрибутите jQuery:

if(1 < $("input[name=2][type=text]").length) {
//duplicate
}

Така че вашата функция ще изглежда така:

function findDuplicates(name) {
return $("input[name="+ name +"]").length;
}

РЕДАКТИРАНЕ

С обикновен JS:

function findDuplicates(name) {
return document.getElementsByName(name).length;
}

0 за отговор № 2

Направете празен Div някъде, нека "кажем, че съм дал на моя div идентификатор на" return_value ".

<script>
function validate(){
var name1 = document.getElementById("1").value;
var name2 = document.getElementById("2").value;
var name3 = document.getElementById("3").value;
var name4 = document.getElementById("4").value;

var error = "";

error = (name1 == name2 || name1 == name3 || name1 == name4 || name2 == name3 || name2 == name4 || name3 == name4) ? "Duplicate Entry!" : "Data OK!";

getElementById("return_value").innerHTML = error;

}
</script>

Просто правите формуляра си при подаване на обажданеФункция Javascript, за да направите сравнението, ако искате действително да изпратите формуляра, ако данните са валидни, можете да го направите, като използвате AJAX. Предишният плакат е правилен, тъй като е трудно да се отговори на това, без повече информация за това, което конкретно се опитвате да направите.


0 за отговор № 3
var found = 0;
var array = new Array(); //create new array

$( "input[type=text]" ).each(function( index ) {
var name = $(index).attr("name"); //get name of current element
if(array.indexOf(name) == -1) //check if name doesn"t exist in array
{
array.push(name); //if true, add it to the array
} else {
found++; //if it exists, increment found
var duplicate = $(index).attr("id"); //get the id of the current element
console.log("Input with Id = " + duplicate + " has a duplicate name attribute");
}


});

0 за отговор № 4

Ако сте минус 1 от дължината, можете да върнете 0, за да няма дубликати.

Аз също ще премина в елемента и името на атрибута за пълна повторна употреба.

function hasDuplicates(el, attr, value) {
return $(el + "[" + attr + "=" + value + "]").length - 1;
}