我的 HTML 中有一个对话框。一些输入元素是通过向它们附加一个序列号来生成具有唯一 id 的。当用户单击“预订它!”按钮时,按钮函数使用 each() 遍历具有相同类的所有输入。这样我可以获取每个输入的 id 并使用 ajax 进行 GET 调用。该按钮第一次正常工作,但此后每次输入的序列号都会相乘。非动态生成的输入不会相乘。似乎通过使用 each() 会导致重新创建独特的元素。
在第一次单击“预订!”按钮时,URL 正确构造如下:AddParty?pMemberId=0&pReservationType_0=34&pReservationType_1=63
但是,随后的点击会增加长度,如下所示: AddParty?pMemberId=0&pReservationType_0=34&pReservationType_1=63&pReservationType_0=34&pReservationType_1=63
这是我从 servlet 返回的 HTML 文件中的对话代码。
<div class="reservation">
<div id="dialog-reservation-form" title="Reservation Form">
<input id="pMemberId" name="pMemberId" type="hidden" value="0"/>
<input id="pReservationType_0" class="PartyType" type="hidden" value="0"/>
<input id="pReservationType_1" class="PartyType" type="hidden" value="1"/>
</div>
<input id="plan-party" type="submit" value="Plan Party"/>
</div>
这是我的 javascript 文件。
$(document).ready(function () {
$("#plan-party").button().click(function (e) {
e.preventDefault();
$("#dialog-party-form").dialog("open");
});
$("#dialog-party-form").dialog( {
autoOpen : false, height : 600, width : 700, modal : true, buttons : {
"Book it!" : function () {
try {
var memberIdValue = document.getElementById("pMemberId").value;
var url = "AddParty?pMemberId=" + memberIdValue;
$(".PartyType").each(function () {
var reservationTypeIdName = $(this).attr('id');
var reservationTypeIdValue = $(this).attr('value');
url = url + "&" + reservationTypeIdName + "=" + reservationTypeIdValue;
});
var ajax = new AJAXInteraction(url, addHuntCallback);
ajax.doGet();
}
catch (e) {
alert(e.description);
}
$(this).dialog("close");
},
Cancel : function () {
$(this).dialog("close");
}
}
});
});