PHP代码
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>
';
脚本:
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>
值已更改的表单吗?
答案 0 :(得分:2)
为您的表单添加ID,例如'setPrivilegeForm_1',然后选择ID为'1'。在下一个'setPrivilegeForm_2'和'2'等。将你的onchange函数改为ajaxPrivilegeSubmit(this.id)并将实际函数改为
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 :(得分:0)
问题是您对多个元素具有相同的id
属性,这会使您的HTML无效。
如果您未在其他位置使用id
属性,请将其删除并改为使用class
选择器
然后在您的选择中设置Google Spreadsheet Client library事件处理程序:
<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);
}
});
});
答案 2 :(得分:0)
使用serializeArray()而不是serialize();