【问题标题】:Android + PhoneGap + jQuery Validate - not firingAndroid + PhoneGap + jQuery Validate - 不触发
【发布时间】:2013-01-25 19:18:05
【问题描述】:

我正在使用带有 jQ​​uery Validate 的 jQuery Mobile。一旦所有页面都完成后,我有多个使用 ajax 序列化发布的表单。

从本机浏览器访问时,下面的“下一步”按钮适用于 iOS 和 Android。当我使用 PhoneGap 打包并在 Android 上运行时,验证不会触发。其他一切正常。

如果我删除 valid() 条件,按钮将按预期工作。所以这一定是我如何使用 jQuery Validate 的问题。

我尝试过以各种方式改变事物的顺序。我试过了:

if (!$("#infofm").valid()) {

if($("#infofm").valid()) {

总是相同的结果 - 在本机浏览器中有效,但在 PhoneGap 之后无效。我已经为此苦苦挣扎了很长时间。这是相关的代码。任何帮助将不胜感激。谢谢!

$(function(){ 
    $('a#nxt1').bind('click', function(event, ui) {
        infoval();
    });

function infoval(){
    var isvalidate=$("#infofm").valid();
    if(isvalidate) {
        $.mobile.changePage('#towertop', {transition: 'slidefade'});
    } else {
        alert("Please fill in all fields on this page before proceding");
    }
};

$(document).ready( function(){ 
$("#infofm").validate({ errorPlacement: function(error, element) {} }); });

<a href="" id="nxt1" data-iconpos="bottom" data-theme="a" data-icon="arrow-r">Next Step</a>

【问题讨论】:

    标签: javascript android cordova jquery-mobile jquery-validate


    【解决方案1】:

    我相信对于 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 事件。

    【讨论】:

    • 谢谢 Sparky。我试过 $('#info').on('pageinit', function(){ 因为那是我的 JQM 页面的名称。在浏览器上工作,但在 PhoneGap 之后,现在页面只是无限期地显示加载微调器......
    • 我对@9​​87654328@了解不多。我在回答一个 jQuery Validate 问题……至少现在可以吗?
    • 问题是 jQuery Validate 与 PhoneGap 结合使用时。验证一直对我有用 - 只是在应用与 PhoneGap 打包之后。
    • 那么,我怀疑我能否提供更多帮助。我无法想象 PhoneGap 会在这里做什么。它会以某种方式更改您的代码吗?
    • 我不这么认为。我正在使用 build.phonegap.com,所以我没有很好地处理这个过程。感谢您的尝试。
    【解决方案2】:

    捆绑到 phonegap 应用程序(在我的情况下是 iOS)时,我的 JavaScript 代码没有被调用。我构建了一个带有多个屏幕和按钮的 Web 应用程序,这些屏幕和按钮根据用户交互隐藏或显示。

    使用与 XCode 捆绑的 iOS 模拟器时,您可以在 safari 中看到生成的 web 应用程序的源代码(在“开发”菜单下,必须在 Safari 首选项中启用开发人员工具)。在源代码中,我注意到我的所有应用程序 html 页面都合并为一个,并且包含的​​唯一 javascript 来自第一页(默认 index.html) - 页面中的所有其他元素都已从文件中删除。所以我改变了

        $(document).ready(function(){ 
           ...
        });
    

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

    (感谢 Sparky,感谢您在上面的回答)并将以下页面中的所有 jquery js 代码添加到 index.html 中。作为示例,我添加了以下行以隐藏其中一个页面上的 div:

        $("#cancelButtonDiv").hide();
    

    现在正在执行代码,并且正在正确调用我的按钮上指定的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2010-12-31
      相关资源
      最近更新 更多