Datalist attribútumainak elérés
Hogyan lehete a HTML5-ös datalist elem attributumait elérni és milyen eseménykezelővel? Azt szeretném az input elem valamilyen definiált data-* paraméterének átadni, hogy majd azt adja át az URL-nek és nem az ékezetes formát. Itt a kód:Azért adom meg a value értékeinek az ékezetes formát, mert azt szeretném, ha a felhasználó így írhatná be rendesen ékezetesen és úgy is dobná fel. Átadásnál viszont a data-value értékeit szeretném átadni, a nem ékezetes formát, hogy az URL-ben ékezet nélkül szerepeljen. Ez csak egy egyszerősített példa, a valóságban komplexebb. Előre is köszi
■
<input id=nev list=nevek>
<datalist id=nevek>
<option value="János" data-value="janos">
<option value="Péter" data-value="peter">
<option value="Pál" data-value="pal">
</datalist>
Szerintem jQuery-vel
http://api.jquery.com/attr/
Eseménykezelő?
Melyik elemen nem működik az
Öregiskolás út
<option value="janos">János</option>
<option value="peter">Péter</option>
<option value="pal">Pál</option>
</select>
select-nél igen, de datalist-nél...
Miért?
Hát igen ... :)
Datalist mellett
Lehet, hogy valamilyen ékezetlenítő függvényt írok akkor, mert ezek szerint máshogy nem nagyon lehet megoldani.
Böngészőfüggő
Más a funkciója
datalist
csak egy segítség, ha a megadni kívánt érték már a listában van, míg aselect
esetében nem választható egyéni érték. Tehát ha a felhasználó pl. a listában nem szereplő Sándor nevet szeretné beírni, akkor azt itt megteheti – és a szerver ekkor ugye nem "sandor" formában kapja meg. Tehát a backend számára egyenrangú a "Péter" és a "Sándor", így a "peter" jellegű verziókra nincs szükség.Ha mégis szeretnéd kezelni, ha a felhasználó a listából választott, akkor az
input
mezőchange
eseményénél kikeresheted adatalist
megfelelő elemét, és annak egy tetszőleges attribútumát átadhatod egy rejtettinput
mezőnek, vagy (ha mondjuk nem találta meg) kiírathatod mező alá, hogy a listában nem szereplő neveket először jóvá kell hagyni.Összességében tehát az űrlap elküldésekor lényegtelen, hogy az
input
mezőhöz tartozik-edatalist
, tehát hagyományosan továbbítódik az értéke a szerver felé. Emiatt tehát nem implementálhatták ugyanúgy, mint aselect
-et, hiszen szövegesinput
esetében a felhasználható által látható értéket küldi el az űrlap – kivéve persze a jelszavaknál :)datalist
De ha ékezetesen írod tovább,
Nem állítom, hogy a legjobb
http://jsfiddle.net/LN8Ps/
Remek megoldás! Az input
Még egy kérdés
Így próbáltam, de még valahová be kellene írni a lowercase-t:
Próbál
http://jsfiddle.net/BmT5c/
jquery data
http://api.jquery.com/jquery.data/
Tökéletesen működik