jQuery-mobile 和 ASP.NET 组合问题

Posted

技术标签:

【中文标题】jQuery-mobile 和 ASP.NET 组合问题【英文标题】:jQuery-mobile and ASP.NET combination issue 【发布时间】:2015-12-01 20:48:39 【问题描述】:

我正在开发一个结合 jQuery.mobile 和 asp.net 网络表单。

为了使我的 asp.net 控件的回发正常工作,我必须在以下位置禁用 ajax 页面顶部,如下所示:

   <script>
      $.mobile.ajaxEnabled = false;
   </script>

但是当像这样禁用 ajax 时,其他功能似乎不起作用。 我无法从 jQuery 文档就绪调用对话框/弹出窗口

例如:

  $(document).ready(function ()         
     $('#myPopup').popup('open'); 
  );

这只会导致弹出窗口在不到一秒的时间内显示出来, 然后它消失了。另外,当我注册客户端脚本时 从代码隐藏到在服务器端按钮时触发弹出窗口 单击,弹出窗口只是闪烁,然后消失。 但是当我在页面顶部禁用 ajax 时,弹出 通话工作正常。

任何想法如何解决这些问题?

【问题讨论】:

【参考方案1】:

文档就绪无法与 jQuery Mobile 一起成功使用。它通常会在页面 DOM 被填充之前触发。

代替这一行:

$(document).ready(function ()         
    $('#myPopup').popup('open'); 
);

使用这一行:

$(document).on('pagebeforeshow', '#page-id', function()       
    $('#myPopup').popup('open'); 
);

其中 #page-id 是包含该弹出窗口的页面的 ID。

jQuery Mobile 在准备好文档时遇到问题,因此其开发人员创建了页面事件来解决此问题,请在此 ARTICLE 中了解更多信息或找到它HERE强>。

编辑:

我认为您的问题也在 $.mobile.ajaxEnabled = false; 处理中。

该代码示例必须mobileinit 事件触发,如下所示:

$(document).bind("mobileinit", function () 
    $.mobile.ajaxEnabled = false;
);

还有一点,mobileinit 事件必须jQuery Mobile 初始化之前触发,如下所示:

<script src="http://www.dragan-gaic.info/js/jquery-1.8.2.min.js"></script>      
<script>
        $(document).bind("mobileinit", function () 
            $.mobile.ajaxEnabled = false;
        );    
</script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>  

【讨论】:

您好 - 感谢您的回复。我试图更改为“pagebeforeshow”,但它仍然只有在我设置 $.mobile.ajaxEnabled = true; 时才有效 让我们一步一步来。您是否在 mobileinit 事件中禁用了 ajax?不能像这样禁用 Ajax: 嗨,我越来越近了,但还没有。这是 JQM 中一种奇怪的工作流程。我现在有: $(document).on('pageinit', function () $.mobile.ajaxEnabled = false; );然后是我的代码隐藏中的一个按钮事件: Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "popup", "$(document).on('pagebeforeshow', '#mobile_page', function () $(' #alert').popup('open'); );", True) Response.Write("test") 问题是popup调用后的任何代码都没有执行。所以在这种情况下 Response.Write("test") 没有被执行。 再次嗨,现在它似乎终于可以工作了。但是我必须在引用标准 jQuery .js 文件之前使用 ajax 禁用事件初始化 mobileinit 代码块,然后它才能工作。嗯..我想我必须研究你关于 JQM 页面生命周期的链接才能理解...... 感谢您的帮助,Gajotres!【参考方案2】:

我做到了.....

请勿使用 说明here

只需打开 jquery.mobile-1.3.1.min.js 文件 好的 ajaxEnabled:!0 并将其更改为 : ajaxEnabled:!1

现在按下 CTRL+F5 并在项目继续的同时让项目快乐! ;)

【讨论】:

以上是关于jQuery-mobile 和 ASP.NET 组合问题的主要内容,如果未能解决你的问题,请参考以下文章

通过 jQuery-mobile 连接到 sql-server

jQuery Validation - 一个 asp.net 表单上的多个提交按钮,不同的验证组?

如何使用 jquery unobtrusive 和 Asp.Net Mvc 验证动态生成的单选按钮组?

使 asp.net 单选按钮列表显示为引导按钮组

ASP.NET MVC 复选框组

是否可以在 MVC for Asp.NET 中使用 Outlook 电子邮件组作为角色?