xforms пароль подтвердить пароль - PullRequest
4 голосов
/ 05 декабря 2011

У меня есть типичный пароль, подтвердите раскладку пароля с помощью xforms: Мой экземпляр выглядит следующим образом:

<data>
  <password/>
  <newPassword/>
  <confirmPassword/>
</data>

, и входные данные такие:

 <xf:secret ref="password">
        <xf:label>Old PAssword</xf:label>
   </xf:secret>

   <xf:secret ref="newPassword">
        <xf:label>New Password</xf:label>
   </xf:secret>
   <xf:secret ref="confirmPassword">
        <xf:label>Confirm Password</xf:label>
   </xf:secret>
   <div>
       <xf:submit submission="test">
            <xf:label>Change Password</xf:label>
       </xf:submit>
   </div>

Я неЯ знаю, как точно проверить и сопоставить newPassword с verifyPassword, я знаю, что это что-то с помощью тега <xf:bind, но я не нашел, как проверить равенство между узлами.Пожалуйста, помогите!

1 Ответ

4 голосов
/ 05 декабря 2011

Вы действительно можете использовать xf: bind для применения ограничений. Просто добавьте следующие строки в ваш xf: model:

<xf:bind nodeset="password" required="true()" constraint=". != ''"/>
<xf:bind nodeset="newPassword" required="true()" constraint=". != ''"/>
<xf:bind nodeset="confirmPassword" required="true()" constraint=". = ../newPassword"/>

Это добавит необходимые маркеры после всех трех полей ввода, убедитесь, что все три поля заполнены, а последние два должны быть одинаковыми. Вы можете добавить ограничение, что пароль и newPassword не могут быть одинаковыми, добавив его с 'и' к ограничению newPassword.

Лично мне нравится получать больше отзывов. Эти ограничения просто приводят к появлению индикаторов за каждым полем без какой-либо дополнительной информации. Было бы лучше, если бы вы могли показать сообщение в тот момент, когда вы пытаетесь отправить информацию. Но это связано с обработкой событий xforms, и я сам не достаточно опытен, чтобы рассказать вам, как это сделать. Существует событие xforms-submit-event, которое вы можете каким-то образом поймать и действовать. Но наиболее распространенная проблема заключается в том, что после того, как отправка отправляется, у вас нет или очень мало возможностей показать обратную связь пользователю перед отправкой на сервер.

Другой вариант - показать условные сообщения с использованием xf: output. Если вы добавите атрибуты incremental = "true" к своим входным данным xf: secret, они будут обновляться при каждом нажатии клавиши. Просто используйте атрибут value с выражением выбора элемента xf: output. Примерно так:

<xf:output value="choose(password = '' or newPassword = '' or confirmPassword = '', 'Please enter current password, new password, and confirmation of new password', '')"/>

<xf:output value="choose(newPassword = '' or newPassword = confirmPassword, '', 'new password, and confirmation do not match!')"/>

Вы также можете добавить красивую печать вокруг них, если хотите. Другие способы создания динамического стиля - использование xf: group, но я оставлю это как упражнение для вас.

Наконец, обязательно проверьте все значения на стороне сервера, просто чтобы убедиться, что никто не обманывает.

НТН!

...