我有一個asp.net webfore應用程序,它在頁面上有一個手風琴,並且它有一些字段。在第一個asp:文本框中,它有一個onclick
,因爲它檢查我的db以查看用戶是否存在。如果他們做了一個asp:標籤,然後顯示。使用jquery添加/刪除類(在視圖或代碼背後)
我遇到的問題是,當我點擊外部或標籤出該字段時,手風琴關閉,我需要它保持打開狀態。我認爲雖然是可以通過JQuery做到這一點,即使我的領域有onclick
或我需要將它添加到我的代碼後面嗎?
在我看來,我試圖
$("#MainContent_txtRemoveUser").on("blur", function()
{
if ($('#MainContent_txtRemoveUser').val() != '')
{
$('panel-collapse collapse').removeClass('collapse');
$(this).addClass('in');
}
});
,但它不工作
在我後面的代碼我試圖
#region Checks if user exists in 'Users' db when field clicked out of
protected void txtRemoveUser_TextChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtRemoveUser.Text))
{
string connection = ConfigurationManager.ConnectionStrings["PaydayLunchConnectionString1"].ConnectionString;
SqlConnection conn = new SqlConnection(connection);
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT 1 FROM Users WHERE Name = @Name", conn);
cmd.Parameters.AddWithValue("@Name", txtRemoveUser.Text);
SqlDataReader rd = cmd.ExecuteReader();
if (rd.HasRows)
{
removeUserNotExist.Visible = false;
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "tmp", "<script type='text/javascript'>function endRequestHandler(sender, args){$('#collapseOne').collapse.in()};</script>", false);
}
else
{
removeUserNotExist.Visible = true;
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "tmp", "<script type='text/javascript'>function endRequestHandler(sender, args){$('#collapseOne').collapse.in()};</script>", false);
}
}
}
#endregion
,但是這也不能正常工作
我的手風琴的HTML是
<div id="RemoveUser" class="panel-group">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne" class="accordion-toggle collapsed">Remove Users From The List</a>
</h3>
</div>
<div id="collapseOne" class="panel-collapse collapse">
<div class="panel-body">
<p>If you would like to remove yourself or someone else from the list, please populate all the fields below ensuring to enter the <b>FULL</b> name of the user (whether its you or another user) and then click the 'Remove From List' button.</p>
<asp:Label ID="removeUserNotExist" runat="server" Text="The user entered does not exist. Please try again." Visible="false" style="color: red"></asp:Label>
<div class="form-group">
<asp:Label runat="server" AssociatedControlID="txtRemoveUser" CssClass="col-sm-offset-2 col-sm-3 control-label">Enter Name To Be Removed</asp:Label>
<div class="col-sm-3">
<asp:TextBox runat="server" ID="txtRemoveUser" CssClass="form-control" AutoPostBack="true" OnTextChanged="txtRemoveUser_TextChanged" />
</div>
</div>
<div class="row">
<div class="col-sm-offset-8 col-sm-3" style="padding-left: 0px">
<asp:Button runat="server" ID="btnRemoveUser" Text="Remove From List" CssClass="btn btn-danger" data-toggle="modal" data-target="#removeUserModal" data-backdrop="static" data-keyboard="false" ToolTip="Click to remove the specified user from the payday lunch list." />
</div>
</div>
</div>
</div>
</div>
</div>
這些都不起作用。儘管我所做的事情可能完全錯誤。
你使用會增加你獲得一個很好的答案的機會澄清其JavaScript庫。什麼是'collapse.in()'?順便說一句,我認爲你的大部分痛苦將通過切換到AJAX而不是autopostback來解決。 –
當你標出它會導致回發,所以手風琴的狀態就會丟失。您可以使用隱藏字段來維持手風琴的狀態,並在頁面加載(document.ready函數)時重新打開手風琴。 – Taleeb