【问题标题】:jQuery Mobile and jQuery Validate [closed]jQuery Mobile 和 jQuery Validate [关闭]
【发布时间】:2013-02-24 19:10:57
【问题描述】:

我正在使用 jQuery Mobile 和 jQuery validate,但无法使其正常工作。到目前为止,这是我的代码。

$('#submit').on('click', function() {
    $("#page2 form").validate({
        rules: {
            firstName: "required",
            lastName: "required"
        },
    });
});

这不起作用。我也试过了,只是在没有点击事件的情况下包含验证,但这也不起作用。想法?

更新:如果有人看到这个,代码没问题,我的标记有错误。不过,Sparky 在下面仍然是一个很好的答案。

【问题讨论】:

  • 您是否收到任何 javascript 错误?您使用的是什么移动设备?
  • 没有 JavaScript 错误,目前只是在浏览器上测试。它需要在桌面和移动设备上工作。我只是想不通为什么我不能让他们工作。我以前从未遇到过验证插件的问题。
  • 您的代码按预期工作,只要您正确初始化插件并摆脱点击处理程序:jsfiddle.net/6FYyv

标签: jquery jquery-mobile jquery-validate


【解决方案1】:

您的代码:

$('#submit').on('click', function() { // <-- REMOVE this
    $("#page2 form").validate({
        rules: {
            firstName: "required",
            lastName: "required"
        },
    });
});

.validate() should only used one time to intialize the form on DOM ready。将插件的初始化包含在点击处理程序中是没有意义的。该插件已经内置了所有将触发实际验证测试的事件处理程序。

简单的 jQuery 示例:http://jsfiddle.net/RmG2g/

$(document).ready(function() { 
    $("#page2 form").validate({ ... });
}); 

但是,由于您使用的是 jQuery Mobile

$(document).on('pageinit', function(){ // <-- you must use this to ensure the DOM is ready

    $("#page2 form").validate({
        rules: {
            firstName: "required",
            lastName: "required"
        },
    });

});

工作演示:http://jsfiddle.net/6FYyv/


对于 jQuery Mobile,您需要使用....

$(document).on('pageinit', function(){

而不是

$(document).ready(function(){

见:http://jquerymobile.com/demos/1.2.0/docs/api/events.html

重要提示:使用$(document).bind('pageinit'),而不是$(document).ready()

在 jQuery 中学习的第一件事是在 $(document).ready() 函数,所以一切都会立即执行 DOM 已加载。然而,在 jQuery Mobile 中,Ajax 用于加载 导航时将每个页面的内容放入 DOM,并且 DOM 准备就绪 处理程序仅对第一页执行。每当一个 新页面已加载并创建,您可以绑定到pageinit 事件。

【讨论】:

  • 谢谢,on click 是出于绝望而进行的实验,我的问题最终证明是错误的标记,但是 on pageinit 非常有帮助,因为我现在已将所有 javascript 转换为 pageinit 而不是文件准备好了。
  • @IanHoar,很高兴我能帮上忙。为了读者的利益,再次重申,pageinit 事件仅在包含jQuery Mobile 时使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 2012-03-03
  • 1970-01-01
  • 1970-01-01
  • 2014-06-05
相关资源
最近更新 更多