2016-08-06 15 views
0

PHPコードフォームの生成されたリストの(PHPによって生成された)動的に生成されたフォームの1

echo ' 
    <div class = "card locations userNameContainer"> 
    <div class = "row" style = "padding: 0 !important;"> 
     <div class = "userName col s5" style = "display: inline-block;"> 
     '.$name.' 
     </div>  

     <form class = "setPrivilegeForm col s6" id = "setPrivilegeForm"> 
     <input type="hidden" value='.$userID.' name="userID" > </input> 
     <select name="userType" id = "userType" class = "customSelect" onchange = "ajaxPrivilegeSubmit()">       
      <option value="" disabled selected class = "grey-text">'.$typeText.'</option> 
      <option value="1">Administrator</option> 
      <option value="2" >Operator</option> 
      <option value="3">Patron</option>       
     </select> 
     </form> 

     <i class = "material-icons col s1">delete</i> 
    </div> 
    </div> 

'; 


プレビュー画像提出する方法:preview

スクリプト:

function ajaxPrivilegeSubmit(){ 
    $.ajax({ 
     type: "post", 
     url: "setPrivilegeForm.php", 
     data: $('#setPrivilegeForm').serialize(), 

     success: function(data){ 

     $(".userNameList").html(); 
     Materialize.toast('Hello', 4000); 

     } 
    }); 

    //$('this').closest('.setPrivilegeForm').submit(); 
} 

のドロップダウンの値がに変更されたときにフォームを送信できるようにしたい(各リストアイテムはフォームです)が、現在ドロップダウンが選択されたフォームの代わりに最初のフォームのみが送信されています(はい、理由はわかります)。

<select>の値が変更されたフォームの送信に役立つ固有の識別子を使用する方法を教えてもらえますか?

答えて

2

フォームに「setPrivilegeForm_1」のようなIDを指定し、ID「1」を選択します。次の「setPrivilegeForm_2」と「2」などajaxPrivilegeSubmit(this.id)へのごのonchange機能を変更し、

function ajaxPrivilegeSubmit(num){ 
    $.ajax({ 
    type: "post", 
    url: "setPrivilegeForm.php", 
    data: $('#setPrivilegeForm_'+num).serialize(), 

    success: function(data){ 
    $(".userNameList").html(); 
    Materialize.toast('Hello', 4000); 
    } 
}); 

//$('this').closest('.setPrivilegeForm_'+num).submit(); 
} 
+1

恐ろしい!私は何かが欠けていたと思った!識別子をパラメータとして渡すことは考えていませんでした。私はあなたの答えを受け入れるでしょう:適切な表示のためにコードをフォーマットしてください。ありがとう!乾杯! :D – hulkinBrain

0

問題への実際の機能を変更するには、あなたが複数の要素に同じid属性を持っているということですHTMLを無効にする原因

他の場所でid属性を使用しない場合は、属性を削除して代わりにclassセレクタを使用してください。
は、その後、あなたの選択に.change()イベントハンドラを設定します。

<form class = "setPrivilegeForm col s6"> 
    <input type="hidden" value='.$userID.' name="userID" > </input> 
    <select name="userType" class = "customSelect">       
    <option value="" disabled selected class = "grey-text">'.$typeText.'</option> 
    <option value="1">Administrator</option> 
    <option value="2" >Operator</option> 
    <option value="3">Patron</option>       
    </select> 
</form> 

スクリプト:

$('.customSelect').change(function(){ 
    var form = $(this).closest('form'); 
    $.ajax({ 
     type : "post", 
     url  : "setPrivilegeForm.php", 
     data : form.serialize(), 
     success : function(data){ 
     $(".userNameList").html(''); 
     Materialize.toast('Hello', 4000); 
     } 
    }); 
}); 
+0

はい私はすべての生成されたフォームのidが同じであることを知っていました。私は、一意の識別子を使って適切なフォームを選択する方法を理解していないようです。 D問題の解決方法 – hulkinBrain

0

使用serializeArray()の代わりにserializeの();

+0

すべてのフォームではなく、単一のフォームを送信したかっただけです。 – hulkinBrain

関連する問題