0

jQueryValidateでjQueryMobileを使用しています。すべてのページが完了すると、ajaxシリアル化で投稿する複数のフォームがあります。

下の[次へ]ボタンは、ネイティブブラウザからアクセスした場合にiOSとAndroidで機能します。PhoneGapをパッケージ化してAndroidで実行すると、検証が実行されません。他のすべては正常に動作します。

valid()条件を削除すると、ボタンは期待どおりに機能します。したがって、jQueryValidateの使用方法に問題があるはずです。

いろいろな順番で並べてみました。私はもう試した:

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>
4

2 に答える 2

0

phonegap アプリ (私の場合は iOS) にバンドルされている場合、私の JavaScript コードは呼び出されませんでした。ユーザーの操作に応じて非表示または表示される複数の画面とボタンを備えた Web アプリを作成しました。

XCode にバンドルされている iOS シミュレーターを使用すると、生成された Web アプリのソースコードを Safari で確認できます ([開発] メニューの下で、Safari の設定で開発者ツールを有効にする必要があります)。ソース コードでは、すべてのアプリの html ページが 1 つにマージされ、含まれている唯一の JavaScript は最初のページ (デフォルトの index.html) のものであることに気付きました。ページ内の他のすべての要素はファイルから削除されています。だから私は変わった

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

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

(Sparky さん、上記の回答に感謝します)、次のページのすべての jquery js コードを index.html に追加しました。例として、次の行を追加して、ページの 1 つで div を非表示にしました。

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

コードが実行され、ボタンで指定されたメソッドが適切に呼び出されています。

于 2013-03-26T08:51:32.133 に答える
0

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()

$(document).ready()jQuery で最初に学ぶことは、DOM が読み込まれるとすぐにすべてが実行されるように、関数内でコードを呼び出すことです 。ただし、jQuery Mobile では、ナビゲートするときに Ajax を使用して各ページのコンテンツを DOM にロードし、DOM Ready ハンドラーは最初のページに対してのみ実行されます。新しいページが読み込まれて作成されるたびにコードを実行するために、pageinitイベントにバインドできます。

于 2013-01-25T20:26:15.380 に答える