🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.javascript
5 messages
5 total messages Started by A5tu5 Tue, 03 Aug 2010 07:40
jquery - pytanie początkującego
#50187
Author: A5tu5
Date: Tue, 03 Aug 2010 07:40
56 lines
2857 bytes
Witajcie,
uczę się jquery i napotkałem pewien problem, którego nie wiem jak ugryźć.
Mam 2 identyczne formularze ktore po submicie (img) maja przeladowac div`a i 
wyswietlić zmienne + wrtosci z formularza:

  <form action="" method="post" id="formularz01">
   <input type="text" name="Ftekst" value="<? echo $_REQUEST['Ftekst']; ?>" 
id="text01">
   <input type="submit" value="wyslij" id="submit01">
   <input type="hidden" name="Fukryty" value="z formularza 1">
   <img src="szuka.png" class="image0001">
    </form>

   <form action="" method="post" id="formularz02">
   <input type="text" name="Ftekst" value="<? echo $_REQUEST['Ftekst']; ?>" 
id="text02">
   <input type="submit" value="wyslij" id="submit02">
   <input type="hidden" name="Fukryty" value="z formularza 2">
   <img src="szukaj.png" class="image0002">
  </form>

O ile formularz01 oprogramowuje w jquery w ten sposob:
  <script>
  $(document).ready(function()
  {
   $("#image0001").click(function()
   {
    $('#print').load('jquery05_print.php', 
$('#formularz01').serializeArray());
   });
  });
  </script>


O tyle nie chcialbym pisac dla kazdego formularza osobnych funkcji w jquery
(   $("#image0001").click(function()
   $("#image0002").click(function()
   $("#image0003").click(function() ...)

Jezeli    $("#image0001").click(function()  zamienie na 
$("img").click(function()  dziala ladnie dla wszystkich formularzy, ale 
niestety nie wiem jak okielznac $('#formularz01').serializeArray  aby 
serializowal odpowiedni formularz (niestety caly czas serializuje 
niezaleznie od wybranego submita i formularza tylko pierwszy formularz, 
nawet, jak zamienie $('#formularz01').serializeArray na ogolny 
$('form').serializeArray).

Jak powinna wygladac uniwersalna funkcja obslugujaca kilka/kilkadziesiat 
takich samych formularzy rozniacych sie kolejnym numerem ID... ?

Mam nadzieje ze nie nakręciłem ;)

Z góry dziękuję za pomoc i sugestie!

-- 
A5tu5 
Re: jquery - pytanie początkującego
#50188
Author: WRonX
Date: Tue, 03 Aug 2010 07:58
41 lines
2219 bytes
A5tu5 pisze:
> Witajcie,
> uczę się jquery i napotkałem pewien problem, którego nie wiem jak ugryźć.
> Mam 2 identyczne formularze ktore po submicie (img) maja przeladowac div`a i 
> wyswietlić zmienne + wrtosci z formularza:

Ja bym raczej sprobowal cos w stylu:

// dla submitu "normalnie"
$("form").submit(function()
{
   // cokolwiek
   $("#print").load("jquery05_print.php",
		   $(this).serializeArray());
});

/*
   w przypadku submitowania obrazkami...
   nie wiem, czemu nadajesz rozne klasy tym obrazkom,
   ale jak musisz, to ok, tylko trzeba oprocz tego nadac
   jeszcze jedna zbiorcza:
   (...)
   <img src="szukaj.png" class="image0001 formSubmit">
   (...)
   <img src="szukaj.png" class="image0002 formSubmit">
*/
$(".formSubmit").click(function()
{
   $("#print").load("jquery05_print.php",
                    $(this).parent().serializeArray());
});




Pozdrawiam.
--
[= WRonX =] [= WRonX@-CUT-WRonX.NET =] [= http://WRonX.NET =]
[= GCS/CC d->++ s+:- a- C++++$ U P>++ L+ !E W+++$ N++(+++) =]
[= !o-- K-? w++$ !O !M- !V-- PS+ PE !Y !PGP !t !5 X++ R++ =]
[= tv+ b+++ DI++ D+ G+ e+++ h--->---- r+++ y? =]
Re: jquery - pytanie początkującego
#50189
Author: A5tu5
Date: Tue, 03 Aug 2010 09:19
65 lines
2899 bytes
Użytkownik "WRonX" <WRonX@[-CUT-].WRonX.net> napisał w wiadomości 
news:4c57cc09$0$2600$65785112@news.neostrada.pl...

Witaj, dzięki za pomoc.
Dokonałem kilku poprawek zgodnie z sugestią. Moje obserwacje są następujące:

> // dla submitu "normalnie"
> $("form").submit(function()
> {
>   // cokolwiek
>   $("#print").load("jquery05_print.php",
>    $(this).serializeArray());
> });

Dla w/w submitu serializeArray dziala bardzo dobrze dla obu formularzy. Wada 
jest to, ze ten submit przeladowuje cala strone, a nie tylko DIVa.

Inaczej submit zachowuje sie dla obrazka:
>   (...)
>   <img src="szukaj.png" class="image0001 formSubmit">
>   (...)
>   <img src="szukaj.png" class="image0002 formSubmit">
> */
> $(".formSubmit").click(function()
> {
>   $("#print").load("jquery05_print.php",
>                    $(this).parent().serializeArray());
> });

Tutaj fakt, przy klasach troche zamieszałem, oczywiście powinny mieć te same 
dla obu obrazków. Niemniej jednak po obsłużeniu submita obrazkowego zgodnie 
z Twoją sugestią, DIV jest ładnie przeładowywany, jednak serializeArray nie 
"serializuje" zmiennych i nie przekazuje ich do DIVa.

Poniżej moje ostatnie wypociny:
<script>
$(document).ready(function()
{
    $("form").submit(function()
    {
        $("#print").load("jquery05_print.php",$(this).serializeArray());
    });

    $(".formSubmit").click(function()
    {
        $('#print').load('jquery05_print.php', $(this).serializeArray());
    });
});
</script>

Generalnie pierwszy SUBMIT pozwala na przekazanie zmiennych z formularzy, 
drugi (obrazkowy) juz nie.
Co ciekawe, dla celow debugowania dodalem do obu:
    var id=$(this).attr('id');
    alert(id);
aby mieć pewność, że "nie gubi" formularza.
No i oczywiscie dla standardowego SUBMITa ladnie zwraca ID, dla obrazkowego 
juz nie.

Mogę prosić o jakies sugestie?

Pozdrawiam!

-- 
A5tu5
Re: jquery - pytanie początkującego
#50190
Author: Peter May
Date: Tue, 03 Aug 2010 10:02
7 lines
1097 bytes
W dniu 2010-08-03 11:19, A5tu5 pisze:
> Mogę prosić o jakies sugestie?

Sprawdź, czy rozwiązanie Twoje zadziała bez JavaScript-u.

-- 
Peter
Re: jquery - pytanie pocz±tkuj±cego
#50191
Author: porneL
Date: Tue, 03 Aug 2010 20:48
19 lines
1363 bytes
On Tue, 03 Aug 2010 08:40:21 +0100, A5tu5 <archee@vp.pl> wrote:

> Witajcie,
> uczê siê jquery i napotka³em pewien problem, którego nie wiem jak ugry¼æ.
> Mam 2 identyczne formularze ktore po submicie (img) maja przeladowac  
> div`a i
> wyswietliæ zmienne + wrtosci z formularza:
>
>   <form action="" method="post" id="formularz01">
>    <input type="text" name="Ftekst" value="<? echo $_REQUEST['Ftekst'];  
> ?>"
> id="text01">

OT: To jest luka XSS. Nigdy nie wypisuj tekstu w HTML bez  
htmlspecialchars().

-- 
http://pornel.net
this.author = new Geek("porneL");
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads