【发布时间】:2011-06-21 15:34:08
【问题描述】:
我对在 jquery mobile 中尝试做的事情有点困惑。我的网站总共有大约 5 个页面,每个页面上都有相同的网络表单。我编写了一个使用 jquery ajax 处理表单的脚本。所有这些都适用于 index.html。
我的 index.html 中有一个 page2 div,用作我网站的第二页,但该表单似乎不起作用。
我还有一个 page3.html 页面。当我转到此页面时,它具有与我的主页相同的表单,但它不需要任何 jquery js,就像我使用 jquery 隐藏 p.error 行一样,它在主页上工作正常,但没有'在内部页面上根本不触发。
有没有办法解决这个问题?当涉及到在整个网站上具有相同的确切形式时,jquery mobile 中的一般建议是什么?现在,我只能让网络表单在我的主页上运行。
这是网站上的一些代码,首先是 js。
$(document).ready(function() {
$('.error').hide();
$(function() {
$(".button").click(function() {
... form validations go here ...
... using $.ajax({ type: "post", data: datastring }) ...
我只是摘录了一段js代码。可能是 document.read 函数仅在主页上加载,然后所有内部页面都丢失了该脚本。那么,不是 index.htl 的页面,我应该以不同的方式触发我的表单脚本吗?
我将每个页面包装在一个 div 中,如下所示:
<div id="container" data-role="page">... my page content code here ...</div>
<div id="page2" data-role="page">... my page content code here ...</div>
每个页面都有相同的表单,但是当我转到第 2 页时,表单验证但它也与另一个表单冲突,所以我无法提交它,因为它总是将表单字段视为空白。
每个页面都包含指向其他页面的链接。当我单击转到不是 index 或 page2 的页面时,表单上没有任何作用(我的 p.error 语句可见,单击提交按钮将我发送到 405 错误页面)。当我从主页提交表单时,一切都按预期工作。如果我没有从下拉列表中选择某些内容,它会显示我的 p.error 短语。如果我将电子邮件地址字段留空,它将显示 p.error 短语以显示错误消息。
我很确定问题是 jquery mobile 如何劫持脚本并将内容加载到 DOM 中,我读到我只能在主页上加载一次 javascript。这是真的吗?
我正在寻找的最终结果是一种在网站的每个页面上都有一个功能齐全的表单和表单验证的方法,无论它是堆叠的数据角色页面还是外部数据角色页面,我想保留所有的动画过渡。
【问题讨论】:
-
我认为我们需要一些源代码来调试它。你用的是什么 jQuery 选择器?
-
每个页面和表单都应该有一个 jQM 可以访问的唯一 ID
-
是的,我只是仔细检查了一遍。在我的外部页面上,我没有唯一的 id,但现在我有了。使 ID 唯一似乎并没有改变任何东西。如果这有帮助,当我去mydomain.com/mobile/index.html 时一切正常。当我转到mydomain.com/mobile/otherpage.html 时,一切正常。事情分崩离析的地方是当事情通过 jqmobile 和哈希标记加载到 DOM 中时,比如mydomain.com/mobile/index.html#otherpage.html - 在这个页面上,我在主页上处理表单的 javascript 脚本似乎没有运行,因为我可以看到 p .error 消息。
-
错误消息是可见的,所以看起来该脚本没有被加载。有没有办法在 jqmobile 加载后调用脚本?我在文档中看到了一些让我认为我可以做到这一点的东西,但文档并不太清楚语法的外观。
-
+1 指出 jQuery Mobile 的缺陷,我在寻找答案时学到了一些东西。
标签: jquery mobile jquery-mobile