10

Web サイトに Facebook 登録を実装しようとしています。onvalidate パラメーターがないと、すべてが期待どおりに機能しますが、それを含めると、すべてが壊れているように見えます (エラーはスローされず、フォームは何もしません)。

これが私のコードです:

<center>
    <fb:registration redirect-uri="http://im.localhost/register"
    fields='[{"name":"name"},{"name":"username","description":"Website Username","type":"text"},{"name":"email"},{"name":"password","view":"not_prefilled"},{"name":"captcha","view":"not_prefilled"},{"name":"tos","type":"checkbox","description":"I accept the Terms of Service"}]' onvalidate='validate'>
    </fb:registration>
</center>
<script> 
function validate(form) {
    console.log('Validation');
    errors = {};
    errors.tos = "You must accept the terms of service";
    return errors;
}
</script>
<!-- at end of page: -->
<script>
    // ...
    FB.init({
        appId: '<?php echo IM_Facebook::getAppIDStatically(); ?>',
        channelUrl: '<?php echo $this->serverUrl().$this->baseUrl('/xsrd.html'); ?>',
        status: true,
        cookie: true,
        xfbml: true
    });
    // ...
</script>

console.log 関数は、フォームの送信ボタンを押しても呼び出されません。(ただし、それ以外の場合はほぼ正常に動作します。「abc を使用して登録しました」というポップアップが表示され、確認をクリックすると消えますが、それ以外は何も起こりません。

このパラメーターを指定せずにカスタム フィールド (ユーザー名) を空白のままにすると、Facebook から入力を求められます。このパラメーターを空白のままにすると、検証関数は呼び出されず、エラーは表示されません。いずれにせよ、このフォームに従って常に表示されるはずの TOS エラーは表示されません。

同様の質問の問題には、Web サイトの URL がアプリケーションの URL と一致しないことが含まれます。この場合、そうではありません。

ドメインを明確にするために、インターネット経由でアクセスできないドメイン「im.localhost」を使用しています。これは問題ではないと思います。なぜなら、onvalidate がなくても登録フォームが機能し、実装したログイン システムが機能するからです。ただし、onvalidate を使用すると、登録フォームはまったく機能しなくなります。

4

1 に答える 1

1
  onvalidate="validate()"

onvalidate="validate" 文字列を呼び出しているだけです...

関数を呼び出すには括弧が必要です

于 2013-12-01T03:06:52.117 に答える