У меня есть эта проблема, когда, если я отключу элемент управления с JQuery в событии.change выпадающего списка, элемент управления будет сброшен до состояния по умолчанию.
У меня есть следующий код:
ASP.NET:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<script type='text/javascript' src="/jquery-1.11.0.min.js"></script>
<body>
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">
<asp:ListItem Value="1">Item1</asp:ListItem>
<asp:ListItem Value="2">Item2</asp:ListItem>
</asp:DropDownList>
</div>
</form>
</body>
<script type="text/javascript">
$("#DropDownList1").change(function () {
$("#DropDownList1").attr("disabled", "disabled");
});
</script>
</html>
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication1
{
public partial class _default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
Таким образом, с помощью этого кода, если вы переключите выбранный элемент из DropDownList1
он будет сброшен на PostBack до состояния по умолчанию. Если элемент управления не отключен с помощью JQuery, он не сбрасывает элемент управления.
Любые идеи, как сделать так, чтобы он сохранял свою ценность в PostBack, будучи отключенным?
Вы можете удалить Autopostback="True"
чтобы не было никаких обратных передач.
<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem Value="1">Item1</asp:ListItem>
<asp:ListItem Value="2">Item2</asp:ListItem>
</asp:DropDownList>
Autopostback="True"
устанавливается всякий раз, когда вам нужно что-то делать по коду, когда вы меняете выпадающий объект.
Попробуйте отключить это.
$("#DropDownList1").attr("disabled", true);