我正在尝试使用asp.net和jQuery mobile登录页面。
当用户点击登录按钮时,我首先在c#中进行一些处理,然后调用JavaScript。
问题是,当我点击登录按钮时,页面似乎在执行JavaScript之前重新加载,我不希望这样。
这是我的代码:
<asp:Button name="login" ID="btnLogin" runat="server" Text="Login" OnClick="btnLogin_Click" />
C#:
protected void btnLogin_Click(object sender, EventArgs e)
{
if (String.Format("{0}", Request.Form["username"]) != "" && String.Format("{0}", Request.Form["password"]) != "")
{
ClientScript.RegisterStartupScript(GetType(), "key", "login();", true);
}
else
{
//todo
}
}
JS / jQuery的:
<script type="text/javascript">
function login() {
jQuery(function () {
jQuery.ajax({
beforeSend: function () {
$.mobile.loading('show', {
text: 'Processing...',
textVisible: true,
theme: 'a'
});
},
type: "GET",
url: "Handler.ashx",
data: "method=validate",
success: function (data) {
$.mobile.loading('hide');
//$.mobile.changePage("HomePage.aspx", { transition: "fade" });
}
});
});
};
</script>
有什么想法吗?
谢谢!
编辑:我仍然需要服务器端代码来处理C#中的密码加密
答案 0 :(得分:1)
OnClick
事件是服务器端事件。这就是它回发的原因。您想使用OnClientClick
事件。这是为了在调用OnClick
事件之前运行客户端代码。
那就是说,在调用javascript之前你需要运行什么服务器端代码?你究竟想做什么?
请详细说明流程。
答案 1 :(得分:0)
这将允许您在客户端处理click事件。 evt.preventDefault
将确保按钮不会回发到服务器。
$('#btnLogin').click(function(evt) {
if(!myCondition) {
evt.preventDefault();
}
else{
}
});