Я использую XFBML, встроенный в документ HTML5. Я настроил проверку на стороне клиента, следуя инструкциям, приведенным в документе «Расширенное использование регистрации» на сайте Facebook, но он показывает только ошибки при размытии и не проверяет, когда я нажимаю кнопку «Регистрация» (так что если я Неправильно заполните поле и щелкните снаружи на другом элементе, он отображает ошибку, но затем я могу нажать кнопку «Регистрация», и она все равно регистрирует меня).
Я проследил это в отладчике JS, добавив операторы alert / log, и моя validate_registration
функция вызывается только onblur, и никогда, когда я нажимаю кнопку Register.
Кто-нибудь видел такое поведение и знает, что мне здесь не хватает? Живой пример, который Facebook использует в разделе «Расширенное использование регистрации», работает отлично, поэтому я знаю, что где-то произошла ошибка.
Мой тег 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;
}