在用戶更改觸發updatepanel回發的select元素之後,我試圖在回發完成後將相同select的值設置爲所選值,但不知怎的,我在回傳後隱藏的字段丟失。如何在updatepanel回發後保留javascript變量?
function countrypostback() {
$('#countryid').val($('select[name="countryselect"]').val());
__doPostBack('upnlSearch', '');
}
$(document).ready(function() {
$.ajax({
type: "GET",
url: "/service.svc/countries/",
data: "",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
for (var i in msg) {
var resultitems = '<select onchange="countrypostback();" class="textbox" name="countryselect" id="countryselect">';
for (var i in msg) {
if (msg[i].name != '') {
resultitems += '<option value="' + msg[i].value + '">' + msg[i].name + '</option>';
}
}
resultitems += '</select>';
$('#countryselect').html(resultitems);
}
}
});
//here I'm trying to set the value of the dropdown to the value that was selected before the postback
$("#countryselect").val($('#countryid').val());
<input type="hidden" id="countryid" name="countryid" />
<asp:UpdatePanel ID="upnlSearch" runat="server">
<ContentTemplate>
<span id="countryselect"></span>
</ContentTemplate>
</asp:UpdatePanel>
我試圖把隱藏字段countryid外部和的UpdatePanel內,但這並不有所作爲,我仍然有一個空formfield當我嘗試通過
$('#countryid').val()
我訪問它'而不是與viewstate一起工作(如果可能的話),因爲這會增加pageload。
唉asp.net的噩夢,我討厭更新面板和卸載Visual Studio和他們的其他蹩腳的「工具」。原因很簡單,因爲它導致回發,除非保存在cookie或會話中,否則無法追蹤該值。不知道如何覆蓋更新面板,或者如果可以的話,我會做的是擺脫微軟的低級ajax實現,並使用jQuery AJAX創建自己的。 –