Autor Zpráva
Gogo_v
Profil *
Dobrý den. Úvodem musím řict ze javascript není mojí nejsilnější stránkou. :)
Potřeboval bych pomoc s jednim scriptem ukázka Odkaz
Potřebuju zamezit možnosti vybrat stejnou volbu v kombinaci menu kabel-bufer-vlakno to znamená když vyberu v jakémkoliv řádku nějakou kombinaci aby ji nebylo možné použít v jiném řádku. Menu je generováno dynamicky a i počet řádků je proměnlivý stejně tak počet kabelů a počet buffrů,vláken. Nevím jestli jsem to popsal srozumitelně případně upřesním :) uvedená ukázka je samozřejmě statická stránka ale na pochopení problému zřejmě bude stačit. Zkoušel jsem si pohrát s jquery ,takže teď to po každé změně udělá sumarize ale nějak nemůžu dosáhnout toho ať to dělá co chci :) Děkuji moc za každou radu.
Darker
Profil
Nesta4ilo by existuj9c9 kombinace ukl8dat do pole a takhle to kontrolovat? Není to moc invenční ale funguje to.
Gogo_v
Profil *
Přestěhoval jsem kod na stránky která je pořád online :) Odkaz
Gogo_v
Profil *
Opět dobrý den. Ukázka
No trošku jsem s tím pohl , ale potřeboval bych ještě poradit s jednou věcí.
udělal jsem to porovnávání v poli ale nevím jak poskládat ten řetězec který budu porovnávat
function kontrola(form,parm) { 

    var hodnoty = [[0,0,0]];
    var hodnotyb = [[0,0,0]];
    
    for ( var i = 0; i < form.cnt.value; ++i )    
      { var idx = i + 1;
        var sela = $("#L1-"+idx).val();
        var selb = $("#L2-"+idx).val();        
        var selc = $("#L3-"+idx).val();

        var selaa = $("#L1-B"+idx).val();
        var selbb = $("#L2-B"+idx).val();        
        var selcc = $("#L3-B"+idx).val();
        hodnotyb[i] = ([selaa,selbb,selcc]);
        hodnoty[i] = ([sela,selb,selc]);
        
         if(compare(hodnoty[i],"Z001,31,241")) {alert("Stejne"); return false;}  
         if(compare(hodnotyb[i],"Z001,31,241")) {alert("Stejne"); return false;}
      }
	}


v parm si nechávám posílat z kterého selectu přišlo onChange je to řetězec "L3-x" nebo "L3B-x" kde x reprzentuje číslo řádku formuláře. otázka zní jak složím hodnotu na porovnávání ve stylu ([sela,selb,selc]) Řešení je samozřejmě nějak zjistit jestli je před - B a pak vzít číslo za pomlkou a vydolovat value z form . Nemám ovšem tušní jak .Děkuji za radu
Gogo_v
Profil *
Oprava : parm má samozřejmě tvar L3-x nebo L3-Bx už ani nevím co píšu :)
Gogo_v
Profil *
Huh.
Tak už mi to dělá co jsem chtěl. pokud bz to někoho zajímalo
function compare (a, b)
{
  if (a.length != b.length)
    return false;

  for (var i = 0; i < a.length; ++i)
    if (a [i] != b [i])
      return false;

  return true;
}

function kontrola(form,parm) { 
    
    var hodnoty = [[0,0,0]];
    var hodnotyb = [[0,0,0]];

    c=parm.split('-')[1];
    
    var compa = $("#L1-"+c).val();
    var compb = $("#L2-"+c).val();
    var compc = $("#L3-"+c).val();
    
    var srovnej = ([compa,compb,compc]);
    
    for ( var i = 0; i < form.cnt.value; ++i )    
      { var idx = i+1;
        var sela = $("#L1-"+idx).val();
        var selb = $("#L2-"+idx).val();        
        var selc = $("#L3-"+idx).val();

        var selaa = $("#L1-B"+idx).val();
        var selbb = $("#L2-B"+idx).val();        
        var selcc = $("#L3-B"+idx).val();
        hodnotyb[i] = ([selaa,selbb,selcc]);
        hodnoty[i] = ([sela,selb,selc]);

    if("L3-"+idx != "L3-"+c)        
         if(compare(hodnoty[i],srovnej)) {alert("Stejne"); return false;}  
    if("L3-B"+idx != "L3-B"+c)
         if(compare(hodnotyb[i],srovnej)) {alert("Stejne"); return false;}
      }
	}

Přijde mi to dost jako prasárna ale alspoň to funguje :)
P.S. Kdyby někdo věděl jak to upravit aby se u posledního SELECTU(vlakna L3-x) zrušil výběr byl bych vděčný.Zkoušel jsem něco ve stylu
 document.form.parm.options=null; 
to ale nefunguje :(
Gogo_v
Profil *
Pokud by to někoho zajímalo
var aktsel = document.getElementById(parm); aktsel.selectedIndex = -1;

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0