jQuery-mobile 和 ASP.NET 组合问题
Posted
技术标签:
【中文标题】jQuery-mobile 和 ASP.NET 组合问题【英文标题】:jQuery-mobile and ASP.NET combination issue 【发布时间】:2013-03-02 14:03:18 【问题描述】:我正在开发一个结合 jQuery.mobile 和 asp.net 网络表单。
为了使我的 asp.net 控件的回发正常工作,我必须在以下位置禁用 ajax 页面顶部,如下所示:
<script>
$.mobile.ajaxEnabled = false;
</script>
但是当像这样禁用 ajax 时,其他功能似乎不起作用。 我无法从 jQuery 文档就绪调用对话框/弹出窗口
例如:
$(document).ready(function ()
$('#myPopup').popup('open');
);
这只会导致弹出窗口在不到一秒的时间内显示出来, 然后它消失了。另外,当我注册客户端脚本时 从代码隐藏到在服务器端按钮时触发弹出窗口 单击,弹出窗口只是闪烁,然后消失。 但是当我在页面顶部禁用 ajax 时,弹出 通话工作正常。
任何想法如何解决这些问题?
【问题讨论】:
【参考方案1】:Document ready 无法与 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 表单上的多个提交按钮,不同的验证组?