Вы действительно можете использовать 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, но я оставлю это как упражнение для вас.
Наконец, обязательно проверьте все значения на стороне сервера, просто чтобы убедиться, что никто не обманывает.
НТН!