jQuery Mobile 和表单提交

标签 jquery ajax jquery-mobile

我决定跳入 jQuery Mobile 框架来实现支持 Wordpress 的移动主题。

我现在遇到了提交带有 url 中的哈希标签的表单并尝试进行验证和 ajax 发布的问题。基本上是不行的。

例如:website.com/contact/<- 有效 website.com/#/contact/<- 不起作用

我知道 href 的 rel="external"标记可以消除 url 中的 #。但我有一些带有自定义插件的博客文章,该插件会呈现我无法使用 rel="external"的注册表单。我想我可以将它用于所有链接,但这会消除平滑过渡。

我可以选择哪些选项来尝试让它发挥作用?我正在尝试将 .submit 绑定(bind)到表单,进行一些验证,然后 ajax 发布它。

更新--

<form id="myform" action="myfile.php" method="post">
<input type="text" id="mytext" name="mytext" />
<input type="submit" id="myform_submit" value="Submit">
</form>

和我的脚本:

jQuery(document).ready(function() { 
 jQuery("#contact_submit").submit(function(){
        alert('WTF');
        }); 
 });

将其更改为:

<form id="myform" action="myfile.php" method="post">
<input type="text" id="mytext" name="mytext" />
<input type="button" id="myform_submit" value="Submit">
</form>

和我的脚本:

jQuery(document).ready(function() { 
 jQuery("#contact_submit").click(function(){
        alert('WTF');
        }); 
 });

两者都不适用于网址中的#。

我还在 jquery.mobile.js 文件之前添加了此内容:

<script type="text/javascript">
jQuery(document).bind(
   "mobileinit", function(){
   jQuery.extend( jQuery.mobile, { ajaxFormsEnabled: false });
   });
</script>

还是不行。

(仅供引用,jQuery 而不是 $ 是因为 WordPress)

--另一个更新。

由于我使用 Wordpress,某些功能表现得很奇怪。就像 is_home() 一样。无论我在哪个“页面”,该函数都会返回 true。我认为这与每个页面的 ajax 调用有关。

最佳答案

我不完全确定您在哪里调用 jQuery.ready 函数,但注册处理程序的推荐方法是绑定(bind)到特定页面的 pagecreate 事件。 pagecreate 事件应仅由首页中的 jQuery.ready 处理。我最近使用 jQuery mobile 构建了一个网站,并且遇到了这个问题。以下代码应该可以让您到达您想要的位置:

jQuery(document).ready(function() {
    $("#id_of_page").live('pagecreate', function() {
        $("form").submit(function(event) {
            event.stopPropagation();
            event.preventDefault();

            // Do stuff here (usually AJAX);

            return false;
        });
    });
});

不幸的是,我没有进行足够的实验来确定这一切是否有必要。我确实知道这对我有用。我几乎本能地将 return false 添加到由 AJAX 处理的所有表单提交中。希望这有帮助!

关于jQuery Mobile 和表单提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4935887/

相关文章:

javascript - 在页面上初始化 jquery 移动小部件会给出 "Cannot read property ' jQuery... .' of undefined"

javascript - jQuery 循环遍历元素,按 data-id 排序并从具有匹配 data-id 的元素中获取值

javascript - 如何从带有大括号的数组中获取长度

php - 无法使用 jQuery AJAX 获取从 PHP-MYSQL 生成的数据的值

JQuery Ajax 使用 node.js 和 express 发布请求

javascript - 提交时切换表单 - jQuery (Ajax)

jquery - 使用 'a href' 构建动态 URL

jquery - 当它们被设置为 0 时图像有填充/边距

javascript - 有两个 "competing"jquery mobile slider ,如果其中一个发生更改,另一个的值设置为 0

css - 如何在查询移动设备中按 ID 或类设置按钮样式