2017-03-21 12 views
1

私はPHPによって生成されたフォームしている:これは、AjaxへのonchangeデータをポストAjaxのデータの代わりに、ID

<form id="change_status_form" name="change_status_form"> 
<input name="booking_int" type="hidden" value="'.$upcoming_bookings[$x]['booking_int'].'"> <select name="booking_status" onchange="change_status();"> 
    <option selected value="0"> 
     Not Yet Arrived 
    </option> 
    <option value="1"> 
     Seated 
    </option> 
    <option value="4"> 
     Cancelled 
    </option> 
    <option value="5"> 
     No Show 
    </option> 
</select> 

を提出します:

function change_status() { 
    $.post('dash_includes/dash_change_booking_status.php', { 
     booking_status: change_status_form.booking_status.value, 
     booking_int: change_status_form.booking_int.value 
    }, function(output) { 
     $('#all_bookings_div').load('dash_includes/dash_display_all_bookings.php').fadeIn("slow"); 
    }); 
} 

それは投稿します提出されると、データをdash_change_booking_status.phpに追加します。これは一度はうまくいきますが、回数を知らなくてもフォームを何度も繰り返す必要があります。私がこれを行うと、アヤックスは最初のものでのみ動作します。

これはフォームのIDと関係があり、クラスに変更する必要があると私は信じています。どのようにa)フォームのクラスを変更するか、b)データを投稿する方法を教えてもらえますか?

サイドノートでは、フォームの下部に追加すると投稿が停止されます。

+0

'id =" change_status_form "'をclass = "change_status_form"に変更し、jqueryに応じてフォームを取得します。 – CodeMonkey

+0

@Inuka "フォームを適切に入手"することで、例を挙げることができますか?私が苦労しているのは、フォームIDが付いていない場合にデータを投稿する方法です。 – user2803146

答えて

1

あなたの質問に基づいて、コンテンツを動的に生成しているように見えますが、これは初めての動作です。以下のコードは、クラスまたはIDに関与せずにトリックを行う必要があります。 は、あなたが(」。booking_status')あなたはたったの$に$(「#のbooking_status」)を変更することができます<select name="booking_status" class = 'booking_status'>

$(document).on("change", "select.booking_status", function(){ 
    var $form = $(this).parents('form:first'); 
    $.post('dash_includes/dash_change_booking_status.php', { 
      booking_status: $form.find("select[name='booking_status']").val(), 
      booking_int: $form.find("input[name='booking_int']").val() 
     }, function(output) { 
      $('#all_bookings_div').load('dash_includes/dash_display_all_bookings.php').fadeIn("slow"); 
     }); 
    }); 
+0

私はあなたのスクリプトを変更しましたが、最初のものを投稿させるだけで同じことをしています。 – user2803146

+0

新しい更新された回答を試してください – Rahi

+0

このエラーが発生しました: "キャッチされていないTypeError:プロパティ 'value' ...を読み取れません。 'change_status_form'部分を変更する必要がありますか? – user2803146

0

<select name="booking_status" onchange="change_status();">を置き換えることができますが、その後、あなたのクエリに複数の値を持つことになります、あなたはそれぞれをラップする必要がありますその後、個々のユニークラッパークラスまたはIDでフォーム

<form id="form1"> 
    <input type="text" class="booking_status"> 
</form> 

そして使用してデータを取得する:

$('#form1 .booking_status').val() 

You can pass the id of the form to your onchange function.

+0

私は動的に生産されるので、どれくらいの形になるのかわかりません。 – user2803146

+0

フォームIDを動的に設定できます。

関連する問題