2015-12-13 3 views
2

У меня есть несколько форм на моей странице (через петлю), каждая из которых имеет собственную кнопку отправки. Я хочу использовать AJAX для получения и отправки данных в .php. Мне нужно знать, какая форма была отправлена, поэтому я могу получить соответствующие значения.DOM-манипуляция - несколько форм

Это простая тележка. Эта форма позволяет пользователю изменять количество предметов в корзине перед оформлением заказа. enter image description here

Вы видите, что есть две кнопки «Изменить количество» (кнопки sumbit), и эти два поля завертываются в тег формы.

Петля, покрывающей форму является:

while ($row = $query->fetch_assoc()) { 
    $item_code = $row['product_id']; 
    $item_name = $row['name']; 
    $item_price = $row['price']; 
    $item_qty = $row['qty']; 
    print"<tr> 
    <td> 
    <img src='http://localhost/store/images/products/$item_code.jpg'> 
    </td> 
    <td>$item_code</td>1 
    <td>$item_name</td> 
    <td>$$item_price</td> 
    <td> 
    <form method='post' action='/store/processing/view_cart.php' class='cart_view_ajax' id='form_id_$item_code'> 
     <input type='text' maxlength='2' value='$item_qty' id='qty'> 
     <input type='hidden' value = '$item_code' name='product_id' id='product_id'> 
     <div><input type='submit' id='submit' value='Change Quantity'></div> 
    </form> 
    </td> 
    <td>x</td> 
    </tr>"; 
} 

Вопрос: Как я знаю, с помощью JQuery то, что форма была отправлена? Помогите мне ...

Согласно данным ответам, мне удалось получить количество представленных форм, подобных этому jQuery. Вот код:

$('form.cart_view_ajax').on('submit', function(e) { 
    e.preventDefault(); 
    // start working 
    var form = $(this); 
    var form_id = form.attr('id'); 
    console.log($('#'+form_id).children().eq(0).val()); 

    return false; 
}); 
+0

'$ ('input [type = submit]'). Click (function() {var allFormInputs = $ (this) .closest ('form'). Find (': input');})' или ' form.find (': input') ' – Terminus

+1

@Terminus, который в основном такой же. Мне нужны конкретные теги ввода (первый и второй). В вашем коде будут перечислены все входы. Вот почему я включил eq(). – candh

+0

Мне просто нравится этот селектор и думал, что это поможет. Если вам нужен определенный вход (-ы), почему бы не повторить их с классом или именем, которое вы можете выбрать, так что вам не придется беспокоиться, если вы измените порядок их в будущем? – Terminus

ответ

0

Вы можете использовать другое скрытое поле ввода, которое содержит идентификатор для этой специальной формы. Я думаю, что это был бы самый простой способ сделать это.

+0

... а затем используйте $ (this), чтобы получить детей, а затем eq (x) x, который я буду знать, будет третьим (зависит от того, где Я помещаю скрытое поле), а затем получаю его attr() или, может быть, val(). Хм, Хорошая идея, чувак. – candh

1

Вы можете просто использовать «product_id», потому что он должен быть уникальным для каждого элемента

<input type='hidden' value = '$item_code' name='product_id' id='product_id'> 

Или вы можете добавить уникальный идентификатор свойства в виде тега

<form method='post' action='/store/processing/view_cart.php' class='cart_view_ajax' id='item_$item_code'> 
$('form#item_3') 

можно добавить уникальный идентификатор строки, поэтому впоследствии можно манипулировать им, и позже вы сможете получить доступ к форме.

<tr id="row_$item_code"> 
$('tr#row_3 form') 

Вы можете добавить «данные» атрибуты в виде

<form method='post' action='/store/processing/view_cart.php' class='cart_view_ajax' id='item_$item_code' data-form_id="$item_code"> 
var form_id = $('form#item_3').data('form_id'); 

Можем ли мы увидеть код JQuery вы сейчас используете?

+0

Мне нравится эта идея, похожая на приведенную ниже. Я могу просто использовать простые методы dom, такие как children и eq(), чтобы получить значение для каждого ввода. Я попробую это. Спасибо! – candh

+0

Я включил код jQuery, который я использую, исходя из вашего ответа ... Посмотрите, если я сделаю это правильно? – candh

+0

это выглядит довольно хорошо для меня, попробуйте сделать каждый уникальный вход уникальным, добавив фактический идентификатор элемента, вы не можете иметь несколько элементов на одной странице с тем же идентификатором – changepicture