Autor Zpráva
Jozef Rusnak
Profil *
Zdravím.

Chcel by som pomocou Javascriptu spraviť multi označenie checkboxov rovnako ako ma GMAIL. Kliknete na prvý checkbox, stlačíte SHIFT, kliknete napr. na 10ty a označia sa všetky od prvého po desiatyô rovnako funguje aj odznačenie. Trochu som hľadal cez Google a našiel som diskusiu:
http://www.codingforums.com/showthread.php?t=13941&page=2

Problém je v tom, že ani jedno riešenie nefunguje na 100% pod IE, FF, Opera.
Toto mi funguje pod FF&Operou /som stiahol/, nedokáže to niekto upraviť aby to išlo aj pod IE?

Príklad funguje vo FF a Opere


Vopred ďakujem za riešenie alebo odkaz.
peta
Profil
1) google.com javascript keyevent crossbrowser shift key ... snimani klaves
2) jakpsatweb - javascript - priklady - formulare ... prace s checkboxy
Jozef Rusnak
Profil *
Ďakujem za odpoveď, môžete mi napísať aj linky? Nechce sa mi preklikávať.. :-)
centi
Profil
Jozef Rusnak
A sakra, tak to je patová situácia. Nám sa totiž tiež nechce.
Jozef Rusnak
Profil *
A sakra, tak to je patová situácia. Nám sa totiž tiež nechce.
Neznášam také OT, keď nemáš čo povedať k danej téme, tak buď radšej ticho. Ak niekto ďalší prečíta túto tému, tak nech z toho tiež niečo má, ak rieši rovnaký problém, Tvoj OT je tak dobrý na dve veci... a nebudem ich tu zo slušnosti menovať :-P
Timy
Profil
Jozef Rusnak
prosím, tady jsou ty linky:

http://www.google.com/search?q=javascript+keyevent+cross+browser+shift +key&spell=1
http://www.jakpsatweb.cz/javascript/priklady/index.html#formulare
Jozef Rusnak
Profil *
Timy
Dik, chcelo by to ale odkaz priamo na funkčný príklad, aký som uviedol ja, zagoogliť viem aj ja :-)
peta
Profil
Jozef Rusnak
"Neznášam také OT"
zvykej si, a tve dalsi prispevky jsou jako on-topic? :)
"Nechce sa mi preklikávať"
zvykej si, ze za tebe nikdo nic delat nebude :)
"zagoogliť viem aj ja"
Tak to zrejme ne. To prvni by mel byt odkaz na vyhledani literatury pro ziskani klavesy shift v ruznych prohlizecich. To druhe je primy odkaz na seznam prikladu s formulari, kde jich je asi 5 na klikani. Staci na obrazovce najit prislusne slovo.
http://www.jakpsatweb.cz/javascript/priklady/index.html#formulare
http://www.jakpsatweb.cz/javascript/priklady/radio-skript.html
http://www.jakpsatweb.cz/javascript/priklady/radio-disabled.html
http://www.jakpsatweb.cz/javascript/priklady/checkbox-target.html
http://www.google.com/search?q=javascript+keyevent+cross+browser+shift +key&spell=1
treba hned prvni odkaz...
http://www.codingforums.com/showthread.php?t=72209
asi paty odkaz i s prikladem
http://www.howtocreate.co.uk/tutorials/javascript/combinedpage
---
//first, tell the browsers to react to the event
if( document.captureEvents && Event.KEYUP ) {
//remove this part if you do not need Netscape 4 to work
document.captureEvents( Event.KEYUP );
}
/* this next line tells the browser to detect a keyup
event over the whole document and when it detects it,
it should run the event handler function 'alertkey' */
document.onkeyup = alertkey;

//now create the event handler function to process the event
function alertkey(e) {
if( !e ) {
//if the browser did not pass the event information to the
//function, we will have to obtain it from the event register
if( window.event ) {
//Internet Explorer
e = window.event;
} else {
//total failure, we have no way of referencing the event
return;
}
}
if( typeof( e.keyCode ) == 'number' ) {
//DOM
e = e.keyCode;
} else if( typeof( e.which ) == 'number' ) {
//NS 4 compatible
e = e.which;
} else if( typeof( e.charCode ) == 'number' ) {
//also NS 6+, Mozilla 0.9+
e = e.charCode;
} else {
//total failure, we have no way of obtaining the key code
return;
}
window.alert('The key pressed has keycode ' + e +
' and is key ' + String.fromCharCode( e ) );
}
---

oki, tak jinak:
http://www.volny.cz/peter.mlich/www.htm#mssub12
- hned prvni odkazy
http://www.volny.cz/peter.mlich/www.htm#msub8
peta
Profil
mimochodem, prijde mi to zbytecne takto resit, protoze uzivatel stejne tuto funkci nezna a nepouzije a navod si cist nebude :)
Jozef Rusnak
Profil *
mimochodem, prijde mi to zbytecne takto resit, protoze uzivatel stejne tuto funkci nezna a nepouzije a navod si cist nebude :)

Áno návod si čítať nebude, ale v GMAILy som tiež nečital návod a prišiel som na to hneď. Pre desktop-like webaplikácie je to dobrá funkcia, zvlášt keď máš označiť 40 checkboxov zo 100 -- tak označuj po jednom a SELECT ALL Ti tiež nepomôže.


zvykej si, a tve dalsi prispevky jsou jako on-topic? :)

Áno sú, rovnako ako Tvoje, lebo sú k téme.

Ale, aby som to zhrnul, ja viem tiež o spúste teoretickych stránkach, aj zagoogliť viem tiež, uviedol som odkaz na diskusiu na túto tému a FUNKČNÝ príklad, ktorý LEN nefunguje v IE a potreboval by som, aby ho niekto, kto niečo podobné riešil, upravil resp. dal mi odkaz na FUNKČNÝ príklad, aby išiel aj v IE. Výsledkom diskusie by malo byť funkčné riešenie, ktoré ak by zase niekto iný potreboval, znova použije. Teda nielen vyriešiť môj problém, ale aj pomôcť ďalším - to je konštruktívna diskusia.

Drísty ako -- nikto nič neurobí za Teba, naštuduj si poriadne JS, keď si lenivý tak my to teraz máme za Teba riešiť a podobne nevedú k riešeniu problému, preto ich považujem za OT. ;-)
peta
Profil
Jozef Rusnak
Komentovat neco, ze je OT nebo ne mi prijde stejny OT prispevek jako kazdy jiny. Pokud k tomu nepridal i dalsi text k tematu. Pak si to rekneme muzes dovolit s cistym svedomym, ze neplacas jen hlouposti a nedelas tu z toho chat :)

"prišiel som na to hneď"
tak to ses dobrej. Obvykle pri oznacovani shift nepouzivam. A kazdy prohlizec se ke klavesam chova trochu odlisne. Nektere ma jako klavesove zpratky.

"zvlášt keď máš označiť 40 checkboxov zo 100"
Ano, to je rozumny duvod. Obvykle na stranku nedavas 100 zaznamu, ale resi to muj dotaz.

"dal mi odkaz na FUNKČNÝ príklad, aby išiel aj v IE"
konkretne tvuj priklad je myslim na tolik specificky, ze ho nikdo nepotreboval, ale je zajimavy.
Co jsem ti tam poradil je to, ze problem bude ve snimani klaves v IE nebo FF a odkazy, kde se doctes proc a jak se to resi. Jsou to vsechno funkcni priklady. Tez by tam mela byt zminka, jestli se da SHIFT pouzit nebo je vyuzit jako klavesova zkratka k necemu.
Dokonce jsem ti tam zkopiroval program, ktery vypisuje cislo zmacknute klavesy.
Nechces, nemusis.

Pak jina otazka. Co za to, kdyz ti to rozchodim? Za dobry pocit u srdce se pracuje jen pro pratele :)
(a prave s pouzitim tamtech odkazu, ktere tak odmitas)
Jozef Rusnak
Profil *
Obvykle na stranku nedavas 100 zaznamu
Práveže mám taký prípad, nie je ich samozrejme až 100, ale to multioznačovanie v GMAILy sa mi páči.

Dokonce jsem ti tam zkopiroval program, ktery vypisuje cislo zmacknute klavesy.
Nechces, nemusis.

Nie, za Tvoje príklady som Ti vďačný, nevravím, že sú o ničom. Ide o to, že pomocou nich zrejme rozbehnem ten program povedzme za pár dní. A ak by som našiel konkrétne riešenie už hotové, tak tých pár dní ušetrím.

Pak jina otazka. Co za to, kdyz ti to rozchodim? Za dobry pocit u srdce se pracuje jen pro pratele :)
(a prave s pouzitim tamtech odkazu, ktere tak odmitas)

Neodmietam žiaden Tvoj odkaz, ďakujem za všetky čo si mi poslal. Zrejme to nakoniec aj tak naprogramujem sám, keď sa nikto s ničím podobným nestretol, resp. to nebude schopný/ochotný spraviť. Sú rôzne super "desktop" efekty pre webaplikácie, ktoré as dajú robiť pomocou AJAXu a keby si niečo také chcel naprogramovať, tak stráviš nad tým /trepnem/ mesiac, ale ak použiješ nejaký OpenSource framework, tak to dokážeš spraviť povedzme za hodinu aj s naštudovaním ako čo nastaviť. Preto som sa najprv opýtal, skôr než zistím, že si to stejne budem musieť spraviť sám. ;-)

Ak chceš nejakú sumu za to že to rozbeháš, tak záleží na tom koľko. Až tak mi zase ten skript síce netreba, ale som zvedavý koľko by si za to chcel. Rozumná cena môže byť akceptovaná.
peta
Profil
pokud sa plati dane, tak u nas se pocita 200kc/hod, takze min 200. A to sa mi neoplati ked to sam na nieco nepouzijem. Mozno ao, ale nie terad. Do CMS. Potom si najdem tuto temu a prerobim si to asi za 20 minut. A este zistim, ci to pojde v IE :)
Jozef Rusnak
Profil *
A este zistim, ci to pojde v IE
Možno novinka, ale ono to vo FF & Opere ide, neide to iba v IE ;-)


takze min 200
Kebyže si Slovák, alebo máš banku na Slovensku, tak dohodnuté. Ale prevod peňazí do ČR stojí niekoľko stovák /aspoň sa mi zdá/, v tom je trošku problém... Musím zistiť ako by sa dalo do ČR platiť "normálne" /PayPal, Visa,.../, nech mi konečne ukážeš ako to prerobíš... Predpokladám že si živnostník, keď si účtuješ 200Kč/hod. takže očakávam faktúru. Alebo túto tému asi presuniem do "Práce & zakázky" a uvidíme, koľko budú chcieť za to iní.
Jozef Rusnak
Profil *
Ďakujem centi-mu, ktorý mi poslal riešenie na email.
Ukážka

K dokonalosti tomu chýba len to, že vo FF to nefunguje správne na "Labely" -- teda keď kliknete na texty vedľa. Ak to označíte zdola nahor tak fungujú aj tie "label", ak však zhora nadol tak nie, fungujú iba checkboxy.. Môj predchádzajúci príklad fungoval OK aj na labely, zrejme je tam nejaký bug. Pomôže ešte niekto zdokonaliť to?
centi
Profil
Jozef Rusnak
Rýchly bugfix (mini hack):

Uprav si túto podmienku, na koniec IF aj ELSE pridaj ten riadok s checkbox._checked


if (target.tagName.toUpperCase() == "LABEL") {
...
// hodnotu obrátim, pretože onclick handler na LABEL sa vykoná skôr ako označenie checkboxu kliknutím na label (predtým to fungovalo, pretože si mal onchange handler, ale s ním sú často problémy)
checkbox._checked = !checkbox.checked;
}
else {
checkbox = target;
checkbox._checked = checkbox.checked;
}


A na konci skriptu v poslednom FOR cykle uprav tento riadok:


checkbox.form.elements[currentIndex].checked = checkbox.checked;


tak, že namiesto checkbox.checked dáš checkbox._checked.

Každopádne by sa skript dal prekopať celý a napísať krajšie, ale snáď ti takýto bugfix postačí :)
Jozef Rusnak
Profil *
centi
Ďakujem veľmi pekne, pre záujemcov som umiestnil celé riešenie sem:
Riešenie
lola
Profil *
<a href="http://sexo.bytom.pl/vajinas-enormes-galerias.html">vajinas enormes galerias</a>*
rar arsle bmp*
http://sesso-vacca.info/fotografia-transex.html

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: