• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

AJAX i kilka formularzy

0 głosów
356 wizyt
pytanie zadane 16 grudnia 2015 w JavaScript przez Pytający Początkujący (290 p.)

Witam,

Dopiero zaczynam zabawę z AJAX i JQuery i napotkałem problem.

Ogólnie to chciałbym dodawać produkty i ilość ich sztuk bez przeładowania do koszyka, wszystko działa gdy mam jeden produkt i jeden formularz, natomiast nie wiem jak zrobić to gdy mam kilka różnych formularzy (produktów z innymi wartościami)

KOD JQ:

<script type="text/javascript">
	jQuery(document).ready(function() {
		$("button[name=dodaj]").click(function() {			
		  var id_prod = $('input[name=id_produkt]').val();
		  var sztuki = $('input[name=sztuki]').val();			  
		   var proceed = true;
		   if(sztuki<="0"){ 
		   $('input[name=sztuki]').addClass('blad'); 
		    $('.bload_tresc').css('display','block');
			setTimeout(function(){
		    $('.bload_tresc').hide(); 
			},3000)
		   proceed = false;
		   }  
		  if(proceed==true) 
		   {
			$.ajax({
				url: "skrypt.php",
				type: "POST",
				data: "add=1&id_prod="+id_prod+"&sztuki="+sztuki,
				success: function(msg) {
					$("#kontener").html(msg);
				}
			});
			$("input").removeClass('blad'); 
		   } 
		});
	});
	</script>

Kod HTML:

<form action="#">
  <div class="ilosc">Ilość<br>
    <input type="number" min="1" name="sztuki"  value="5"/>
  </div>
  <input type="hidden" name="id_produkt" value="210"/>
  <div class="bload_tresc">Proszę wybrać liczbę nie mniejszą niż 1</div>
  <div class="wiecej">
    <button type="button" name="dodaj" style="background:none; border:none;"><i style="color:#005826;" class="fa fa-2x fa-check-circle"></i> </button>
  </div>
</form>
<br>
<br>
<br>
<form action="#" >
  <div class="ilosc">Ilość<br>
    <input type="number" min="1" name="sztuki"  value="10"/>
  </div>
  <input type="hidden" name="id_produkt" value="212"/>
  <div class="bload_tresc">Proszę wybrać liczbę nie mniejszą niż 1</div>
  <div class="wiecej">
    <button type="button" name="dodaj" style="background:none; border:none;"><i style="color:#005826;" class="fa fa-2x fa-check-circle"></i> </button>
  </div>
</form>

Próbowałem coś z opcją "this" w jq ale nie do końca ją rozumiem, przeglądam już którąś godzinę google ale nie mogę znaleźć nic co by mi trochę pomogło.

1 odpowiedź

0 głosów
odpowiedź 17 grudnia 2015 przez nefil1m Stary wyjadacz (10,690 p.)
W .click() możesz się odwołać do formy np $(this).parents('form') i wtedy pobrać wartości z inputów tylko w obrębie tej formy albo szybciej/leniwiej za pomocą .serialize()

http://api.jquery.com/serialize/

Zauważ, że serialize() jest w event handlerze dla 'submit' podpiętym do formy a nie jak w Twoim przypadku 'click' na buttonie.
komentarz 17 grudnia 2015 przez Pytający Początkujący (290 p.)
edycja 17 grudnia 2015 przez Pytający

Zrobiłem coś takiego, niby działa, ale czy jest to poprawnie zrobione?

 <script type="text/javascript">
	jQuery(document).ready(function() {		
		$("button[name=dodaj]").click(function() {				
		  var id_prod =$(this).parents('form').find('input[name=id_produkt]').val();
		  var sztuki = $(this).parents('form').find('input[name=sztuki]').val();			  
		   var proceed = true;
		   if(sztuki<="0"){ 
		   $(this).parents('form').find('input[name=sztuki]').addClass('blad'); 
		   $(this).parents('form').find('.bload_tresc').css('display','block');
			setTimeout(function(){
		    $('.bload_tresc').hide(); 
			},3000)
		   proceed = false;
		   }  
		  if(proceed==true) 
		   {
			$.ajax({
				url: "skrypt.php",
				type: "POST",
				data: "add=1&id_prod="+id_prod+"&sztuki="+sztuki,
				success: function(msg) {
					$("#kontener").html(msg);
				}
			});
			$("input").removeClass('blad'); 
		   } 
		});
	});
	</script>

 

Podobne pytania

0 głosów
0 odpowiedzi 160 wizyt
pytanie zadane 19 maja 2020 w JavaScript przez endriuu0 Nowicjusz (140 p.)
0 głosów
2 odpowiedzi 1,472 wizyt
0 głosów
1 odpowiedź 1,208 wizyt
pytanie zadane 30 października 2016 w JavaScript przez niezalogowany

93,742 zapytań

142,678 odpowiedzi

323,297 komentarzy

63,326 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...