<fb:registration onvalidate =“”>无法正常工作</fb:registration>

时间:2013-02-11 19:31:10

标签: javascript facebook registration facebook-social-plugins xfbml

我正在尝试在网站上实施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会要求我填写它。如果我将此参数留空,则不会调用validate函数,也不会显示任何错误。无论哪种方式,根据这种形式应始终显示的TOS错误永远不会显示出来。

类似问题'问题涉及网站网址与应用程序的网址不匹配。在这种情况下情况并非如此。

对于域名澄清,我正在使用通过互联网无法访问的域名“im.localhost”。我不相信这是一个问题,因为如果没有onvalidate注册表单工作,登录系统我已经实现了工作。但是,使用onvalidate,注册表格根本不再起作用。

1 个答案:

答案 0 :(得分:1)

  onvalidate="validate()"

onvalidate =“validate”你刚刚调用一个字符串......

你需要括号来调用函数