Проверка на стороне клиента с помощью Facebook Регистрация XFBML - PullRequest
1 голос
/ 01 марта 2012

Я использую 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;
}

1 Ответ

3 голосов
/ 01 марта 2012

Итак, не обращайте на это внимания.

Я получаю сообщение «Вы только что зарегистрировались для X, используя свою учетную запись Facebook. Если вы не хотели этого делать, вы можете отменить это ниже».и подумал, что это значит, что я зарегистрировался.Но если я нажимаю «Продолжить» в этот момент, он показывает мне все ошибки проверки, поэтому он работает правильно - он не проверяется только после последнего шага.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...