2012-02-29 15 views
1

私はHTML5文書に埋め込まれたXFBMLを使用しています。私はFacebookのサイトの "Registration Advanced Uses"の文書に記載されている説明に従ってクライアント側の検証を設定しましたが、ぼかしのエラーだけを表示し、 "Register"ボタンをクリックしたときは検証しません。間違ったフィールドを記入し、別の要素の外側をクリックすると、エラーが表示されますが、登録ボタンをクリックして、それを登録します)。Facebookの登録によるクライアント側の検証XFBML

私はJSデバッガでそれをトレースし、アラート/ログステートメントを追加して、validate_registration関数はonblurと呼ばれ、Registerボタンをクリックすることはありません。

誰でもこの動作を見て、私がここで何が欠けているか知っていますか? Facebookの "Register Advanced Uses"のライブサンプルは完全に動作しているので、私はどこかで間違いがあることを知っています。

マイXFBMLタグはこれです:

<div class="fb-registration" 
    onvalidate="validate_registration" 
    fields="[ 
     {'name': 'name'}, 
     {'name': 'first_name'}, 
     {'name': 'gender'}, 
     {'name': 'email'}, 
     {'name': 'user_type', 'description': 'Are you a?', 'type': 'select', 
     'options': { 
      'parent': 'Parent/Guardian looking for childcare', 
      'sitter': 'Babysitter/Nanny looking for sitting jobs' 
     } 
     }, 
     {'name': 'zip_code', 'description': 'Zip code', 'type': 'text'}, 
     {'name': 'over_eighteen', 'description': 'I am at least 18 years old', 'type': 'checkbox' } 
    ]" 
    fb_only="true" 
    redirect-uri="<%= parse_fb_connect_signed_request_users_url %>" 
    width="530"> 
    </div> 

と私の検証機能はこれです:

function validate_registration (custom_fields) { 
    var errors = {}, 
     regexZipCode = /^\d\d\d\d\d$/; 

    console.log("in validate_registration"); 

    if (custom_fields.user_type !== 'parent' && custom_fields.user_type !== 'sitter') { 
     errors.user_type = "Select either Parent or Sitter"; 
    } 

    if (! regexZipCode.test(custom_fields.zip_code)) { 
     errors.zip_code = 'Enter your 5-digit U.S. zip code'; 
    } 

    if (! custom_fields.over_eighteen) { 
     errors.over_eighteen = 'You must be at least 18 years old to use this site!'; 
    } 

    return errors; 
} 

答えて

3

ので、これを気にしません。

「あなたはあなたのFacebookアカウントを使用してXに登録しました。」 これを行うつもりがない場合、これを元に戻すことができます。それが私が登録したことを意味すると思った。しかし、その時点で「続行」をクリックすると、すべての検証エラーが表示されるため、正しく動作します。最終ステップの後まで検証されません。

+0

はい、Facebookの「あなたがちょうど登録しました」と言っているのは、「登録しました」という意味ではありません。私は今日これを理解しようと数時間を費やし、あなたの投稿を見て、あきらめる前に見ました。ありがとう! – danorton

関連する問題