Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Duplicitní položky

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Duplicitní položky

Autor: asdasd

5:01:28 28.11.2010

[code]var
$inputs = $('#test input'),
checked = [];
$inputs
.each(function() {
$(this).css('background', '#ffffff');
})
.each(function() {
var
value = $(this).val(),
$duplicates = $([]);
if ($.inArray(value, checked) == -1) {
$inputs.each(function() {
if ($(this).val() == value)
$duplicates.push($(this));
});
if ($duplicates.length > 1) {
$duplicates.each(function() {
$(this).css('background', '#aa0000');
});
checked.push(value);
}
}
});[/code]

Citovat příspěvek

 

Re: Duplicitní položky

Autor: Jadro007

19:07:31 22.11.2010

Díky peto :)

"Cely problem si rozeberes na elementalni kroky." - Diky tomuto sem to vyřešil :)

Jenom sem vymyslel jiny postup nez ty ->

Udělám pole z hodnot inputů, to setřídím pomocí .sort(), abych mohl jednodušeji zjistit duplikace. Když nějakou zjistí, uloží tuto hodnotu do dalšího pole. Pak se projde každý input a koukne se to, jestli náhodou nemá nějakou hodnotu z pole s duplikovanými hodnotami.

// kontrola duplicity

$inputy = $(this).parent("td").parent("tr").parent().find(".nazev");
$pole = [];
$inputy.each(function(index, value){
$pole[index] = $(this).val(); // přiřadíme do pole hodnoty prvků
})
$pole_serazeno = []; // pak prvky seřadíme
$pole_serazeno = $pole.sort();
$duplicitni_hodnoty = []; // duplicitní položky
var k = 0;
var i = 0;
while(i < $pole_serazeno.length) { // najde duplicitní položky
var index = i;
var aktualni = $pole_serazeno[index];
var predchozi = $pole_serazeno[index - 1];

if(aktualni == predchozi && aktualni != "") {
$duplicitni_hodnoty[k] = aktualni; // a duplicitní hodnoty uloží do pole
k++;
}
i++;
}

var i = 0;
$inputy.each(function(){ // pro každý input
$(this).css("background-color", "white");
});
while (i < $duplicitni_hodnoty.length) { // pro každou duplicitní hodnotu
$inputy.each(function(){ // pro každý input
if($(this).val() == $duplicitni_hodnoty[i]) {
$(this).css("background-color", "yellow");
}

});
i++;
}

Citovat příspěvek

 

Re: Duplicitní položky

Autor: peta1

11:06:06 22.11.2010

Ukazkova tabulka nic?










PolozkaKategorie
aaa
bbb
ccc


"Mám nějáké inputy (v tabulce, na každém řádku jeden input) s třídou "nazev".
Potřebuju barevně označit inputy se stejnou hodnotou. "

function hledej(value)
{
var i;
for(i=0;i {
if (pole[i][0]==value) {return i;}
}
return false;
}

function pridej(index,value)
{
var n;
n = hledej(value);
if (n!==false)
{
pole[i] = [value,[index]]; //novy
}
else
{
pole[i][1][pole[i][1].length] = [index]; //pridej
}
}

function zmenclass(smazat,pridat)
{
var i,j,k;
for(i=0;i if (pole[i][1].length>1)
{
for(j=0;j k = pole[i][1][j];
inputy[k].removeClass(smazat);
inputy[k].addClass(pridat);
}
}

var pole = [];
inputy = $('table#seznam tr td input.nazev");
inputy.each(pridej);
zmenclass('','oznac');
Ciste teoreticky by to melo fungovat. Cely problem si rozeberes na elementalni kroky.

PolozkaKategorie
aaa
bbb
ccc
"Mám nějáké inputy (v tabulce, na každém řádku jeden input) s třídou "nazev". Potřebuju barevně označit inputy se stejnou hodnotou. " function hledej(value) { var i; for(i=0;i1) { for(j=0;j

Citovat příspěvek

 

Duplicitní položky

Autor: Jadro007

19:15:31 21.11.2010

Ahoj,
potřeboval bych pomoct.
Mám nějáké inputy (v tabulce, na každém řádku jeden input) s třídou "nazev".
Potřebuju barevně označit inputy se stejnou hodnotou.
Zkoušel jsem to (úspěšně), ale vznikl extrémně neefektivní kód a navíc, umí pouze obarvovat a né odbarvovat.

Pro pobavení (omlouvám se za případné zděšení) a abyste neříkali, že sem se nesnažil, přikládám můj kód :)

var pole = new Array();

$(this).parent("td").parent("tr").parent().find(".nazev").each(function(){
pole.push($(this).val());
});


var indexy = new Array();
var j = 0;
while(j < pole.length) {
var i = 0;
var this_val = pole[j];
var duplikace = 0;
while(i < pole.length) {
if(pole[i] == this_val && this_val != "") {
duplikace++;
indexy.push(i);
if(duplikace >= 2) {
$(this).parent("td").parent("tr").parent().find(".nazev").each(function(index,value){
var k = 0;
while(k < indexy.length) {
if(index == indexy[k]) {
$(this).css("background-color", "yellow");
}
k++;
}
});
}
}
else {
$(this).css("background-color", "white");
}


i++;
}
j++;
}

});

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: