jqueryとajaxの新機能、誰かが私を助けてくれるのだろうか?各入力フィールドの右ボタンを送信できません[複数のボタンと入力フィールドを1つのフォームで入力]
私は、1つの入力タイプ=番号とボタンをプリントアウトするphp foreachループを持っています。以下のコードは、各行が項目名を表示するテーブルと、ユーザーが数量を入力するためのボックスと、アイテムを販売するボタンを作成します。
<div class=verktyg>
<form action='sell_items.php' method='POST' id='ajax'>
<table class="inventory">
<?php
foreach (array_slice($items, 2) as $key => $value) {
if($value>0){
echo "<tr>
<td id='verktyg-first-td'>".$key."</td>
<td>".$value."</td>
<td><input type='number' name='items[$key]' value='0'></td>
<td><button type='submit' name='item' value='$key'>sell</button></td>
</tr>";
}
}
?>
</table>
</form>
</div>
そして、これは私のjqueryの/ Ajaxコードです:問題に今
$(document).on('submit','form#ajax', function(){
var that = $(this);
url = that.attr('action');
type = that.attr('method');
data = {};
that.find('[name]').each(function(index, value){
var that = $(this);
name = that.attr('name');
value = that.val();
data[name] = value;
});
$.ajax({
url: url,
type: type,
data: data,
success: function(response) {
console.log(response);
}
});
return false;
});
。私は最初の項目(最初の行)の2単位を売ろうとすると、私のフォームは最後の行(最後の行)に、最後の入力フィールドを提出していると考えています。
これはブラウザのコンソール
にconsole.log(応答):See my ajax response in console when i click sell item in the first row
にconsole.log(データ):私は、最初の項目の2台を販売しようとすると、See my ajax data in console when i click sell item in the first row
は、私は私のjsスクリプトを開始しようとしました:
$('form#ajax').on('submit', function(){
代わりの
$(document).on('submit','form#ajax', function(){
しかし、それは...任意のアイデアを動作しませんでしたか?
EDIT: 私はこの問題に間違った方法に近づいているかもしれません...今、たぶん私がクリックされたボタンを発見し、このような何かを書くことで、前の要素の値を取得する必要があります考えてイム:
var btn= $(this).find("button[type=submit]:focus").val();
var quantity = $(btn).prev("input[type=number]").val();
console.log(btn);
console.log(quantity);
まだ、私のの数量は定義されていません。私はこの問題に間違った方法に近づいているかもしれない...今イム たぶん私はしたボタンを見つける必要があります思考:事前
後に以下のコードを追加します。しかし、唯一の問題は今私のPHPのステートメントです:if(isset($ _ POST ['item']))dosentボタンクリックを検出し、 "未定義インデックス:アイテム" –
@DavidMozartAndraws私の答えを更新、それをチェックしてください –
作品今の魅力のように!心から感謝する! –