11521 sujets

JavaScript, DOM et API Web HTML5

Je voudrais pouvoir remplir la valeur du champs prix une fois sélectionné le champs quantité.
J'ai un fichier php qui renseigne la base de données et me revois les resultats en json comme suit:
[{
         id: "1",
         item: "Coca",
         qty: "12",
         price: "250"
     },
     {
         id: "2",
         item: "Orange",
         qty: "20",
         price: "102"
     },
     {
         id: "3",
         item: "pepsi",
         qty: "30",
         price: "250"
     }
 ];

Mon problème ce que en sélectionnant la quantité de la première ligne, il me met la valeur du prix sur la première ligne correctement, mais en sélectionnant la quantité de la deuxième ligne il me remplace la valeur du prix de la première ligne au lieu de de me remplir directement le prix de la deuxième ligne.
voila le formulaire
<form>
 <table id="fact-tablee" style="margin-top:10px;" cellpadding="0" cellspacing="0">
    <tr>
                                              
        <th>Item</th>
        <th>Quantity</th>
        <th>Price</th>                                             
    </tr>
                                            
    <tr class="tr">
        <td><input type="text" name="item[]" value=""></td> 
		<td><select name="qty[]" class="qty">
			<option value="12">12</option>
			<option value="20">20</option>
			<option value="30">30</option>
		</select></td>
		<td><input type="text" name="price[]" value="" class="price"></td>
    </tr> 
	<tr class="tr">
        <td><input type="text" name="item[]" value=""></td> 
		<td><select name="qty[]" class="qty">
			<option value="12">12</option>
			<option value="20">20</option>
			<option value="30">30</option>
		</select></td>
		<td><input type="text" name="price[]" value="" class="price"></td>
    </tr>
                                        
  </table>
</form>

et voila le js
$("form").on('change', '.qty', function(){

 	 var qty = $(this).val();

 	 $.ajax({
	 	 	url: data,
	 	 	data: {'qty':qty},
	 	 	dataType:'json',
	 	 	success: function(data){
	 	 		if(data ==''){	 	 			
	 	 			$('.price').val(0);
	 	 		}else{
					$.each(data, function(index, element){
						$('.price').val(element.price);
					});
	 	 			
	 	 	  }
	 	 	}
	 	 });
    });

Merci d'avance pour votre aide
Il faut que tu change la sélection de '.price' pour que cela fonctionne :
$(".price") sélectionne tous les éléments avec la class price ,
si veux sélectionner le "price" relatif à la quantité que tu modifies essai ceci dans ton ajax success :

$(this).parents('.tr:first').find('.price').val(element.price);


Je n'ai pas testé mais cela devrait fonctionner: le principe est de sélectionner le container parent contenant "qty" qui a été modifié ($(this) est élément qty modifié) mais c'est aussi le container du "price" relatif à celui-ci, ensuite le find recherche l'élément "price" dans ce container ....

Bonne journée