2011-11-12 16 views
0

jqueryモバイル& jquery-validateを使用した簡単な登録フォームがあります。Jqueryモバイルフォームの応答処理

ユーザーが正しいユーザー名とパスワードを入力した場合、そのユーザーをダッシュ​​ボードにリダイレクトします。 フィールドが見つからない場合、クライアント側の検証によってそのフィールドが取得されます。

私の問題は、サーバー側の検証でユーザー登録が拒否される場合です。 たとえば、ユーザー名はすべて準備完了です。

この場合、サーバー上のページにエラーメッセージが表示されます。

クライアント側では、元のページ遷移が表示され、新しいページ遷移が表示されます。 新しいページに正しく表示されるエラーメッセージが表示されます。 クライアント側の検証を開始するスクリプトがどのように有効にならないのですか。

私の推測では、ページに同じIDを持つ2つの要素が同時に存在すると思います。 それで、古いものはもう一度検証が実行され、その後に移行されます。

どうすれば対応できますか?ここで

$('#registerPage').live('pagecreate', function (event) { 
    $("#registerForm").validate({ 
     rules: { 
      username: "required", 
      password: "required", 
      confirmPassword: { 
       required: true, 
       equalTo: "#password" 
      } 
     } 
    }); 
}); 

答えて

1

が検証セレクタのためのコンテキストとして新しいページを使用して、それを修正するスクリプトです。

var rps = rps || {}; 
rps.register = rps.register || {}; 
rps.register.validate = function (context) { 
    $("#registerForm", context).validate({ 
     rules: { 
      username: "required", 
      password: "required", 
      confirmPassword: { 
       required: true, 
       equalTo: "#password" 
      } 
     } 
    }); 
}; 

$(document).on('pageshow', '#registerPage', null, function (event, ui) { rps.register.validate(); }); 
$(document).on('pagehide', '#registerPage', null, function (event, ui) { rps.register.validate(ui.nextPage); });