Autor Zpráva
www-tappedout-cz
Profil *
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 *
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 *
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
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 *
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
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 *
Ou... tak to bude problém, protože jde o funkci, která je přímo z knihovny jQuery. :(
quatzael
Profil
No ale měla by tam existovat možnost callback..
Chamurappi
Profil
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 *
      
<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 *
      <script type="text/javascript">
            $(function() {
                        var availableTags = [<?php get_friend_list_autocomplete(); ?>];
                        $("#naseptavac").autocomplete({
                                      source: availableTags,
                                      change: function(event, ui)
                              {
                                      $("#aform").submit();
                              }
                        });
                  });
      </script>

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: