Autor | Zpráva | ||
---|---|---|---|
www-tappedout-cz Profil * |
#1 · Zasláno: 2. 6. 2013, 12:45:53
Dobrý den,
již pár dní se pokouším udělat našeptavač, který automaticky přesměruje výstup na požadovaný profil. V praxi se jedná o to, že mám seznam přezdívek a při výběru jedné z nich potřebuji přeposlat na její profil. Takže bych začal psát přezdívku, našel vhodný řetězec a bez nutnosti odeslání mě to přesměrovalo na jeho profil. Mám hotový našeptavač (respektive vývojáři knihovny jQuery): HTML: <form action="?searchfriend" method="POST"> <input type='text' name='naseptavac' id='naseptavac'> <input type='submit' name='searchfriend' value="Přejít na profil"> </form> jQuery: <script type="text/javascript"> $(function() { var availableTags = [<?php get_friend_list_autocomplete(); ?>]; $("#naseptavac").autocomplete({ source: availableTags, delay: 2 }); }); </script> Teď to funguje tak, že když najdu vyhovující přezdívku (nick) tak po kliknutí se s ní vyplní formulář. Chtěl bych však předejít kroku, kdy to musím odeslat a automaticky bych chtěl přejít na profil uživatele nebo alespoň zavolal php skript, ve kterém bych si již přesměrování dal. Nemáte někdo nějaké nápady na řešení? Díky moc! :) |
||
quatzael Profil |
www-tappedout-cz:
Podle toho co jsi popsal, jestli jsem to pochopil tak potřebuješ řešení s metodou submit().. Do onclick události (nebo nějaké jiné, kterou potřebuješ) si hoď kód se submitem: $("form").submit(function(){ // něco co potřebuješ }); případně jen: $("form").submit(); |
||
www-tappedout-cz Profil * |
#3 · Zasláno: 2. 6. 2013, 14:27:58
No, já se chtěl právě vyhnout funkci, že to budou muset odesílat. Chtěl bych to mít bez tlačítka odeslat (type=submit), prostě jen vyberou z nabídky a ihned je to přesune na profil. Přezdívku převedu na ID a dle ID vyhledávám příslušný profil.
|
||
quatzael Profil |
www-tappedout-cz:
No vždyť tam žádný tlačítko nedávej a strč to $("form").submit(); do události, která odpovídá tomu tvýmu výběru z nabídky..
|
||
www-tappedout-cz Profil * |
#5 · Zasláno: 2. 6. 2013, 14:50:57
Jop, teď jsem to pochopil, bohužel nemohu vybrat správnou funkci, která by počkala až na to, co si vyberu ze seznamu a po výběru = nahrání výsledku do inputu formulář provedla...
<input type='text' name='naseptavac' id='naseptavac' onMouseUp='$("form").submit();'> |
||
quatzael Profil |
#6 · Zasláno: 2. 6. 2013, 14:55:45
www-tappedout-cz:
no to bys měl dát přímo do tý funkce z autocomplete, která do toho inputu vkládá ten výběr.. |
||
www-tappedout-cz Profil * |
#7 · Zasláno: 2. 6. 2013, 14:58:58
Abych se přiznal, moc js nerozumím. Takto?
<script type="text/javascript"> $("form").submit(function(){ var availableTags = [<?php get_friend_list_autocomplete(); ?>]; $("#naseptavac").autocomplete({ source: availableTags, delay: 0 }); }); </script> |
||
quatzael Profil |
#8 · Zasláno: 2. 6. 2013, 15:13:53
www-tappedout-cz:
.autocomplete() je funkce/metoda, kterou sis buď někde stáhl nebo sám naprogramoval. Musíš to vložit do toho kódu tam, kde ta funkce přímo vkládá do toho inputu tu hodnotu, a hned za to dát ten submit.. |
||
www-tappedout-cz Profil * |
#9 · Zasláno: 2. 6. 2013, 15:21:59
Ou... tak to bude problém, protože jde o funkci, která je přímo z knihovny jQuery. :(
|
||
quatzael Profil |
#10 · Zasláno: 2. 6. 2013, 15:35:29
No ale měla by tam existovat možnost callback..
|
||
Chamurappi Profil |
#11 · Zasláno: 2. 6. 2013, 15:50:23
Reaguji na www-tappedout-cz:
Není, je z jQuery UI. Kdyby sis našel její dokumentaci, dočetl by ses, že jedním z parametrů může být change . Do něj se dává funkce, která se má vyvolat při změně.
Mimochodem, nestačil by ti na tohle úplně obyčejný <select> ? Existuje nějaká užitečná reakce na napsání jména, které v seznamu neexistuje?
Reaguji na quatzaela: „ $("form").submit() “
Tímhle vyvolá odeslání všech formulářů na stránce. „No vždyť tam žádný tlačítko nedávej“ Čemu vadí, že tam má odesílací tlačítko? |
||
www-tappedout-cz Profil * |
#12 · Zasláno: 2. 6. 2013, 16:06:34
<script type="text/javascript"> $(function() { var availableTags = [<?php get_friend_list_autocomplete(); ?>]; $("#naseptavac").autocomplete({ source: availableTags, change: $("#autocomplete").submit(function(){}) }); }); </script> <div class="box marginTop20px"> <div class="boxContent light"> <h2 class="Tform">Vyhledat přítele</h2> <div class="form"> <form name="autocomplete" action="?searchfriend" method="POST"> <input type='text' name='naseptavac' id='naseptavac'> </form> <div class="clear"></div> </div> </div> </div> Je to tak tedy správně? |
||
Chamurappi Profil |
Reaguji na www-tappedout-cz:
„Je to tak tedy správně?“ Základním symptomem toho, aby to bylo správně, je, že to bude fungovat správně. Funguje to správně? Řekl bych, že ne. Do change máš přiřadit funkci, nikoliv to, co vrací funkce submit (kterou voláš okamžitě). Viz rozdíl mezi voláním funkce a funkcí.
V uvedeném HTML kódu nemáš nic, co by šlo vybrat selektorem #autocomplete .
Mimochodem, marginTop20px je opravdu nádherný název třídy. Na první pohled velmi universální.
|
||
quatzael Profil |
Chamurappi:
> „$("form").submit()“ > Tímhle vyvolá odeslání všech formulářů na stránce. To samozřejmě vím.. já nevím jakej tam má id, tak jsem mu to napsal takhle, to mu snad dojde.. „Čemu vadí, že tam má odesílací tlačítko?“ Psal, že tam žádný tlačítko nechce.. |
||
www-tappedout-cz Profil * |
#15 · Zasláno: 2. 6. 2013, 16:23:39
<script type="text/javascript"> $(function() { var availableTags = [<?php get_friend_list_autocomplete(); ?>]; $("#naseptavac").autocomplete({ source: availableTags, change: function(event, ui) { $("#aform").submit(); } }); }); </script> |
||
Časová prodleva: 11 let
|
0