Auto Suggest
3 naročniki
3 naročniki
Pozdravljeni!
Rad bi vas povprašal po predlogih za rešitev mojega problema:
V obrazcu imam eno vnosno polje (input), ki deluje po principu Auto Suggest (ko uporabnik vnese črko dobi predloge iz baze glede na ujemanje). Ko uporabnik klikne na neko ponujeno vrednost se ta doda v omenjeno vnosno polje, na koncu pa se doda še podpičje (;).
tako
Ime Priimek;
Sedaj lahko uporabnik ponovno začne tipkati in ponovno se prikažejo ujemajoče vrednosti... postopek se ponovi, kot zgoraj...
Ime Priimek; Ime1 Priimek1;
Tukaj nastopi moje vprašanje.
Ker gre za zapise iz baze, si moram nekje zapomniti ID-je izbranih elementov. Kaj predlagate? Ali obstaja kakšna elegantnejša rešitev, kot ta, da napravim neko skrito vnosno polje in tam dodajam pripadajoče ID-je?
(Tukaj je potrebno potem tudi paziti, da če uporabnik naknadno pobriše neko osebo se mora tudi ID odstraniti.)
Prvo vnosno polje omogoča tudi, da uporabnik vnese 'nov' ime in priimek do konca nakar bo ta oseba dodana v bazo.
3 odgovori
Lahko pa dodajaš v javascript array. Z indeksom(key) skrbiš, da so ID-ji itak unikatni, odvisno od situacije setaš ali unsetaš. On submit pa potem ta array spraviš v input hidden.
Predlagam da uporabis tole ready-made resitev: http://www.brandspankingnew.net/archive/2007/02/ajaxautosuggest_v2.html
Z manjsimi predelavami sem jo uporabil v enem nasem produktu in moram rect da je zlo super.
Anyway, osebno priporocam, da si ID-je shranjujes v skrito vnosno polje, ker potem zastojn dobis posiljanje preko forme :)
Problem brisanja pa resis, tako da uporabnik ne more brisati posameznih crk ampak mu naredis fake vnosno polje in prikazujes vnose tko kot ima npr. facebook pri posiljanju privat sporocil.
Hvala obema za predloge.
V vsakem primeru sem imel namen uporabiti ready-made rešitev, vendar nobena ni bila v celoti takšna kot sem potreboval.
V glavnem je bil problem to, kako hraniti, tiste podatke, ki še niso v bazi (niso vključeni v autosuggest) a jih uporabnik vseeno lahko doda. Na koncu sem to rešil z 2D javascript arrayem, ki se na submit pretvori v skrito vnosno polje.
Brisanje pa sem rešil tako kot si predlagal ti @swizec.