AJAX iskanje in dodajanje v seznam (select) z dodatnimi informacijami
Na blogu smo že obdelali kopijo Google AJAX Suggest, ki nam ponuja relevantne oz. poskuša posredovati rezultate medtem ko uporabnik tipka iskalni niz. Obstaja pa tudi druga zanimiva možnost iskanja z AJAX-om - (in seveda še tisoč drugih) pri katerem uporabniku dobljene rezultate po iskanju dodamo v HTML select (spustni seznam - dropdown), zraven pa pri vsaki opciji (HTML Option) shranimo še nekaj dodatnih informacij z pomočjo attributov.
Naš primer bo iskanje vrednostnih papirjev kjer rezultate shranimo v spustni seznam (ime vrednostnega papirja), shranimo pa tudi dodatne informacije in sicer v našem primeru vrednost vrednostnega papirja ter valuto. Ko uporabnik klikne na eno izmed opcij v spustnem seznamu (HTML select) izračunamo celotno vrednost (število * vrednost papirja) ter zapišemo ime valute, ki je privzeta valuta za izbran vrednostni papir.
AJAX iskanje je podobno AJAX Google suggest kopija iskanju. Ko uporabnik vpiše iskalni niz pokličemo PHP skripto. Da bi preprečili konstantno klicanje smo dodali vmesno fazo, ki sproži iskanje šele po 0.6 sekunde ne-aktivnosti uporabnika, torej počaka 0.6 po tem ko uporabnik neha tipkati:
-
function searchPapers() {
-
if (searching!=null) {
-
clearTimeout(searching);
-
}
-
-
searching = setTimeout("preformAJAXSearch();", 600);
-
}
-
-
function preformAJAXSearch() {
-
sendRequest('ajax_select_search.php', 'm=search', 'papersSearched', 'GET', 'An error occured while trying to preform search. Please inform admin staff.')
-
}
Dobljene rezultate dodamo v spustni seznam, shranimo pa kot zgoraj omenjeno tudi dodatne informacij, del kode:
-
var option = document.createElement("option");
-
option.text = market_code+' - '+paper_name+' ('+paper_title+')';
-
-
option.title = currency;
-
option.className= paper_price;
-
option.value = paper_id;
-
-
try{
-
//standards compliant; doesnt work in IE
-
select.add(option, null);
-
}catch(ex){
-
//IE only
-
select.add(option);
-
}
Ko uporabnik klikne na eno izmed opcij v seznamu izračunamo vrednost ter nastavimo valuto vrednostnega papirja:
-
var select = document.getElementById('paper_name');
-
document.getElementById('currency').value = select.options[select.selectedIndex].title;
-
-
var paper_price = select.options[select.selectedIndex].className;
-
portfeil_price.value = parseFloat(quantity)*parseFloat(paper_price);
V našem primeru dodatne informacije shranjujemo v className (class="xxx") ter title, ki ne vplivajo na sam izgled opcije v seznamu ali vrednost le-te.
Datoteke:
- Primer delovanja kode - preizkusite
- Javascript koda, ki skrbi za funkcionalnost iskanja in dodajanja v spustni seznam
- XML rezultati (php skripta)
- XML rezultati (php skripta) - v .inc formatu
- Ajax knjižnica (ajax_global.js)
Projekt: E-portfelj
Delodajalec: Positiva.si
Podobni članki:
- AJAX iskanje datotek, dodajanje v seznam ter predogled le teh (PDF, jpeg)
- Google AJAX Suggest kopija
- Select – dropdown – width – internet explorer
- AJAX Gmail indikator – prikaz statusnega okna pri AJAX operacijah
- Operacije nad seznami – Javascript DOM – HTML select – HTML option
- Javascript – delci uporabne kode
- AJAX na enostaven način
- MySQL iskanje LIKE vs FULL-TEXT
- Stalno osveževanje del spletne vsebine – ajax jquery.get – javascript setinterval
- MySQL dupliciranje podatkov z INSERT INTO SELECT stavkom



March 16th, 2008 ob 11:04 am
[...] Na blogu sem že pisal o iskanju vsebine, kjer smo poiskali rezultate ter le-te dodali v seznam (z d.... Pri iskanju datotek je princip podoben. Z AJAX-om poiščemo datoteke, ki ustrezajo danim pogojem, rezultate dodamo v seznam s pomočjo Javascript-a ter jih, ko so izbrane s strani uporabnika tudi prikažemo (predogled). Predogled je možen za različne vrste datotek, v našem primeru bomo uporabili PDF, Jpeg datoteke (mimetype). [...]