Sasa Posted April 8, 2008 Report Share Posted April 8, 2008 Meklēju sākumā googlē bet nemācēju noformulēt ko es gribu panēkt. Tātad ir tāda lieta ka ir listbox ar querija palīdzību savāc datus ko sevī rādīt. Un šobrīd man tajā list box'ā ir ļoti daudz ko izvēlēties. Kā lai sataisa tadu kā meklētāju iekš tā listbox šobrīd ņem pēc pirmā burta bet zem tā pirmā butra arī ir ļoti daudz? Listbox nav editējams! Link to comment Share on other sites More sharing options...
NiTrino Posted April 8, 2008 Report Share Posted April 8, 2008 (edited) bez ajax palidzibas man liekas te neiztikt. uztaisi kaut kadu <input type="text" name="search" onchange="displayResults(this.value)" /> un taa displayResults f-ja suuta ajax requestu un apdeito to 'listbox' pec search parametra. aa jaa, padomaju ka mosh var iztikt bez ajax, js masiivaa turot elementus un meklejot pec tiem, hvz cik atri tas gan varetu stradat Edited April 8, 2008 by NiTrino Link to comment Share on other sites More sharing options...
bubu Posted April 8, 2008 Report Share Posted April 8, 2008 Parasti tas saucās auto-complete. Gūglē meklējot papildus vari pielikt ajax keywordu un 100% ka kautko atradīsi. Link to comment Share on other sites More sharing options...
Sasa Posted April 9, 2008 Author Report Share Posted April 9, 2008 (edited) bet tas list box man izskatās šādi: un tur tanī list box es nevaru nekā editēt. Bet vērtības es ņemu no jau sagatavota querija. Edited April 9, 2008 by Sasa Link to comment Share on other sites More sharing options...
andrisp Posted April 9, 2008 Report Share Posted April 9, 2008 http://www.google.com/search?hl=en&q=j...pt+autocomplete Link to comment Share on other sites More sharing options...
indoom Posted April 9, 2008 Report Share Posted April 9, 2008 Uz ātro uzmetu šādu piemēru Meklē selectā vārdus, kas satur ierakstītos simbolus Link to comment Share on other sites More sharing options...
Sasa Posted April 9, 2008 Author Report Share Posted April 9, 2008 būs šis pēdējais variants jāpamēģina sataisīt, bet domāju ka būs kārtējās problēmas to visu salikt tā lai strādā kad pienāk klāt jauns listbox'is jo man tie listbox'i var krātiec viens zem otra kaut 10. Link to comment Share on other sites More sharing options...
Sasa Posted April 10, 2008 Author Report Share Posted April 10, 2008 indoom, piemērs strādā pat ļoti labi, tik ir viena problēma man to listbox'šu var būs ļoti daudz, bet meklētājs meklē tikai pirmajā! <script type="text/javascript"> var finder = { ftimer : 0, list : null, flist : function (el) { if (this.ftimer) { clearTimeout(this.ftimer); } if (!this.list) { this.list = document.getElementById('Kods'); } <-- meklēšana notiek tikai pa pirmo listboxi! this.ftimer = setTimeout(function () { finder.filter(el.value.replace(/^\s+/g,'').replace(/\s+$/g,'')); el=null; },500); // meklē pēc noteikta intervāla, kad beidz rakstīt }, filter : function (t) { for(var i=0,e=finder.list.options,l=e.length,c,f;i<l;i++) { c = e[i]; if (t === '') { // noņem filtru if (c.filter === true) { c.style.display = ''; c.filter = false; } e[0].selected = true; } else { // pieliek filtru f = c.value.toLowerCase().indexOf(t.toLowerCase()) === -1; c.filter = f; c.style.display = f ? 'none' : ''; if (!f) { c.selected = true; } } } } }; </script> Kā varētu sataisīt, kaut kā tā, ka ir: { this.list = document.all('Kods',i); } kur i katru reizi palielināt, kad pirmais list box ir apstiprināts (manā gadījumā ar enter nospiešanu), mans Enter taustiņa nospiešanas scripts: <script language=JavaScript1.2><!-- //notikumi pie ENTER taustina nospiesanas function microsoftKeyPress() { if (window.event.keyCode== 13){ //parbaude uz ENTER taustina nospiesanu //saglabajam ierakstu ... try { if (MSODSC.DataPages.Count > 0) if (MSODSC.CurrentSection == null) MSODSC.DataPages(0).Save(); else MSODSC.CurrentSection.DataPage.Save(); } catch (e) { alert (e.description);} //parejam uz jaunu rindinu ... try { if (MSODSC.CurrentSection == null) MSODSC.DataPages(0).NewRecord(); else MSODSC.CurrentSection.DataPage.NewRecord(); } catch (e) { alert (e.description);} } } //--></SCRIPT> bet kā es varu pie Enter nospiešanas palielināt i un nodot to funkcijai kura meklējas pa listbox'i? Link to comment Share on other sites More sharing options...
indoom Posted April 10, 2008 Report Share Posted April 10, 2008 (edited) Papildināju sākotnējo skriptu ar loopu, kas iet cauri visiem sarakstiem. Jānorāda meklējamo listu id arrayā if (!this.list) { this.list = [document.getElementById('list1'),document.getElementById('list2'),document.getElementById('list3')]; } Nesapratu, kāpēc tas enter vajadzīgs? Edited April 10, 2008 by indoom Link to comment Share on other sites More sharing options...
Sasa Posted April 10, 2008 Author Report Share Posted April 10, 2008 tas Enter man ir vajadzīgs lai junus listboxus iedod un katrā list boxi man var būt cita vērtība, tāpēc ka man ir id listboxim viens un tas pats tāpēc arī gribu no enter funkcifas nodod meklētāja funkcijai vērtību un tad sanāks document.all('listbox',i) , kur i ir nodotā i vērtība no enter funkcijas! un tad meklētājs zinās ka ir jāmeklē nākamajā listbox kurš mēc kārtas skaitļa ir nākamais. Link to comment Share on other sites More sharing options...
indoom Posted April 10, 2008 Report Share Posted April 10, 2008 Izmantojot enter, zūd dinamika. Tavā variantā var izmantot šādu kodu tad <script type="text/javascript"> var finder = { ftimer : 0, flist : function (el, target) { if (this.ftimer) { clearTimeout(this.ftimer); } this.ftimer = setTimeout(function () { finder.filter(el.value.replace(/^\s+/g,'').replace(/\s+$/g,''),target); el=null; },500); // meklē pēc noteikta intervāla, kad beidz rakstīt }, filter : function (t,target) { if (!(target = document.getElementById(target))) { return; } for(var i=0,e=target.options,l=e.length,c,f;i<l;i++) { c = e[i]; if (t === '') { // noņem filtru if (c.filter === true) { c.style.display = ''; c.filter = false; } e[0].selected = true; } else { // pieliek filtru f = c.value.toLowerCase().indexOf(t.toLowerCase()) === -1; c.filter = f; c.style.display = f ? 'none' : ''; if (!f) { c.selected = true; } } } } }; </script> un palaiž ar <input type="text" value="" onkeyup="finder.flist(this,'list1')" onchange="finder.flist(this,'list1')" /> kur 'list1' ieraksti meklējamā lista id Link to comment Share on other sites More sharing options...
Sasa Posted April 10, 2008 Author Report Share Posted April 10, 2008 (edited) id ir viens un tas pats katru reizi mainās tikai tā id kātras numus , piem., man ir id='Kods' tādu id var būt kaut 10 viens zem otrā bet lai es varētu tikt pie devītā, man jārīkojas šādi: document.all('Kods',9) un ja es gribu iet visiem id='Kods' cauci man vajag ciklu piems cikla saskaitīt cim to to 'kods' ir. Nesanāk pie katra Enter taustiņa nospiešanas palielināt i par 1 function microsoftKeyPress() { i = 0; if (window.event.keyCode== 13){ //parbaude uz ENTER taustina nospiesanu i = i + 1; alert(i); //saglabajam ierakstu ... try { if (MSODSC.DataPages.Count > 0) if (MSODSC.CurrentSection == null) MSODSC.DataPages(0).Save(); else MSODSC.CurrentSection.DataPage.Save(); } catch (e) { alert (e.description);} //parejam uz jaunu rindinu ... try { if (MSODSC.CurrentSection == null) MSODSC.DataPages(0).NewRecord(); else MSODSC.CurrentSection.DataPage.NewRecord(); } catch (e) { alert (e.description);} } } katru reizi izvadās 2, bet vienu reizi takš viņš palilina! Edited April 10, 2008 by Sasa Link to comment Share on other sites More sharing options...
indoom Posted April 10, 2008 Report Share Posted April 10, 2008 Ok, ja pareizi sapratu, tad ir viens input lauks, ar kuru meklē vispirms vienā listā, tad pēc enter nospiešanas meklē nākošajā? šitam tagad vajadzētu tā darboties Jānorāda maxinc : 3; cik daudz listi būs (cik lielu incrementu ļaut) un palaži ar onkeyup="finder.flist(event, this,'list')" onchange="finder.flist(event, this,'list')" tam 'list' tad klāt kabināsies skaitlis. Citi mainīgie vairs tur nav. Link to comment Share on other sites More sharing options...
Sasa Posted April 10, 2008 Author Report Share Posted April 10, 2008 (edited) šķiet ka šitais nederēs, jo es sākumā nezinu cik man to listbox'šu būs, es nevaru tā vienkārši ierobēžot. Sākumā kad es atveru savu lapu man tur ir tikai viens list box un kad nospiežu enter pienāk klāt otrs un tā spiežot enter tie list boxi krājās. Vai var kaut kā tajā meklētāja izveidot tādu kas darītu kā es esmu izdomājis, kad es savā enter nospiešanas funkcijā gribu to elementa palielināšanu ielikt kaut kā neskaitās uz priekšu! iekš savas KeyPress funkcijas man sanāk palielināt to i vērtību, <script language=JavaScript1.2><!-- //notikumi pie ENTER taustina nospiesanas i = 1; function microsoftKeyPress() { if (window.event.keyCode == 13){ //parbaude uz ENTER taustina nospiesanu //saglabajam ierakstu ... try { if (MSODSC.DataPages.Count > 0) if (MSODSC.CurrentSection == null) MSODSC.DataPages(0).Save(); else MSODSC.CurrentSection.DataPage.Save(); } catch (e) { alert (e.description);} //parejam uz jaunu rindinu ... try { if (MSODSC.CurrentSection == null) MSODSC.DataPages(0).NewRecord(); else{ MSODSC.CurrentSection.DataPage.NewRecord(); i++; alert(i); } } catch (e) { alert (e.description);} } } //--></SCRIPT> Bet kā lai nodot šo vērtību indoom funkcijai pirmajam variantam kas tika bublicēts? Edited April 10, 2008 by Sasa Link to comment Share on other sites More sharing options...
bubu Posted April 10, 2008 Report Share Posted April 10, 2008 Nu tad taisot to jauno listboxi pieliec to indoom uzrakstīto filter funkciju uz taimouta šim listboksim. Kur problēma? Link to comment Share on other sites More sharing options...
Recommended Posts