2012-11-30 43 views
2

我一直在寻找这个网站的答案,但我卡住了。JQuery Mobile + ASP.NET - 不触发按钮

有人可以帮助我解决以下问题。我有一个用VB编写的ASP.NET项目,并使用jQuery Mobile 1.2.0版本。

我有一个默认页面,有2个按钮(登录/约),这些工作并重定向到登录页面。然而,在登录页面上,登录按钮事件不会触发 - 它只是重新指向默认页面。使用简单的重定向按钮在关于页面上也是如此。

但是,如果我刷新登录页面然后按钮的工作?

下面是代码:

<%@ Page Title="Login" Language="vb" EnableEventValidation="false" AutoEventWireup="false" MasterPageFile="~/Site.Master" CodeBehind="login.aspx.vb" Inherits="Sequencing.login" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="page_title" runat="server"> 
Login 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="head" runat="server"> 
</asp:Content> 
<asp:Content ID="Content3" ContentPlaceHolderID="pageheader" runat="server"> 
<h1>Login</h1> 
</asp:Content> 

<asp:Content ID="Content4" ContentPlaceHolderID="body" runat="server"> 

<asp:LinkButton ID="LinkButton1" data-role="button" data-rel="dialog" 
    data-transition="pop" runat="server" 
    Visible="False">LinkButton</asp:LinkButton> 

<div align=center class="ui-bar ui-bar-c"> 

<asp:Image ID="Image1" runat="server" ImageUrl="~/images/McD_logoimage.png" /><br /> 

<h3>Planning the Future</h3> 

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 

<asp:Login ID="Login1" DestinationPageUrl="~/user/Main.aspx" runat="server" Width="100%"> 
<LayoutTemplate> 
<asp:TextBox ID="UserName" runat="server" value placeholder="Username"></asp:TextBox> 
<asp:RequiredFieldValidator ID="cvUserName" runat="server" ControlToValidate="UserName" ToolTip="User Name is required." ValidationGroup="Login1" Display="Dynamic"> </asp:RequiredFieldValidator> 
<asp:TextBox ID="Password" runat="server" type="password" runat="server" value placeholder="Password"></asp:TextBox> 
<asp:RequiredFieldValidator ID="cvPassword" runat="server" ControlToValidate="Password"  ToolTip="Password is required." ValidationGroup="Login1" Display="Dynamic">   </asp:RequiredFieldValidator> 
<asp:CheckBox ID="RememberMe" runat="server" Text="Remember me!" /> 
<asp:Literal ID="FailureText" runat="server" EnableViewState="False"></asp:Literal> 
<asp:Button ID="LoginButton" runat="server" data-role="button" data-theme="b"  CommandName="Login" Text="Log In" ValidationGroup="Login1" onclick="LoginButton_Click" /> 
    </LayoutTemplate> 
</asp:Login> 
    </ContentTemplate> 
</asp:UpdatePanel> 
</div> 
</asp:Content> 

感谢您的帮助提前。

而且这个 - 我已经看过了如何禁用jQuery Mobile的和添加的代码到网站母版,其中jQuery的引用 - 但仍然没有喜悦!

<script> 
    $(document).bind("mobileinit", function() { 
     //apply overrides here 
     $.mobile.ajaxEnabled = false; 
    }); 
</script> 
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" /> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"> </script> 
<script type="text/javascript"  src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script> 

其他人有什么想法吗?

+0

我们无法帮您处理该代码。也许只有当你拥有它的时候。 jQuery手机有时会将页面移动到一个动态创建的div中,这通常在表单的外面,这就是没有被解雇的原因。 – Aristos

+0

对不起,我不明白你的意思?我已经发布了这个网站 - 而且它也不在现场工作。 – Steve

+0

你可以给我们的网址来测试它吗?并看看出了什么问题。 – Aristos

回答

1

刷新登录页面后,您将看到形式如下:

<form method="post" action="Login.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="form1" class="ui-mobile-viewport ui-overlay-c"> 

但是,如果你发现,当你第一次浏览到http://seq-dev.rs-mcd.co.uk/,然后点击“登录”,在<form>元素在登录页面上看起来是这样的:

<form method="post" action="" id="form1" class="ui-mobile-viewport ui-overlay-c"> 

注意,形式不具有所需要的ASP .NET正常工作正确actiononsubmit值。我没有太多的jQuery Mobile经验,但我确实看到它正在做它的“AJAX导航”魔术,它正在与ASP .NET搞砸。一般来说,ASP .NET不能很好地与jQuery移动(或其他方式?)搭配使用。也许你可以以某种方式禁用AJAX导航 - 这可能会诀窍。你要不断地碰到这个问题,在ASP .NET服务器端的事件,如果你不能禁用AJAX导航。

希望这可以指引您朝着正确的方向发展。

编辑

经过一番搜索,我发现this blog post这也解释了如何禁用jQuery Mobile的AJAX导航。这里是相关的片段:

<script type="text/javascript"> 
    $(function() { 
    // disable ajax nav 
    $.mobile.ajaxLinksEnabled = false; 
    }); 
</script> 

希望这有助于!

+0

我禁用了脚本管理器和更新面板,它仍然是一样的。它仍然表现相同。 – Steve

+0

你误会了。 ASP .NET不会导致问题。删除更新面板和脚本管理器将无济于事。您需要禁用jQuery Mobile的AJAX导航行为。 –

+0

啊我看到了 - 你有什么想法如何做到这一点? – Steve

2

打开jQuery-mobile.js并搜索“提交”,提交行为在移动版本.js中有所不同。

所以,请评论说,提交功能,在移动js,那么你的asp.net形式将根据其行为提交。

对手机js中的提交行为发表评论,您不会失去任何功能,只需注释即可。