2014-12-30 2 views
0

У меня довольно большая форма, что я разбился на отдельные разделы с кнопками «Далее» и «Назад», чтобы пользователь мог перемещаться по каждому шагу.Подтвердить только части формы

Вот как я поставил его на работу на данный момент:

  • Каждый раздел находится в его собственном XP: Панель
  • Каждый хр: панель скрыта с «дисплей: нет». Переход происходит, когда пользователь нажимает на кнопку «Далее» или «Назад» с помощью выцветанию анимации JQuery в

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

Прямо сейчас, когда я нажимаю кнопку «Далее», каждое поле проверяется и переход не выполняется.

Есть ли способ, что я могу проверить только поля в определенном разделе или я должен использовать что-то вроде фрагмента кода Дона Mottolo в: http://openntf.org/XSnippets.nsf/snippet.xsp?id=ssjs-form-validation-that-triggers-errormessage-controls

Спасибо за вашу помощь!

P.S .: Я знаю, что я мог бы использовать часть CSJS события onClick для запуска некоторой проверки, но я бы хотел использовать элементы управления «Display Error».

+0

какой язык, C#, java? – HaveNoDisplayName

+0

Привет, Пиюш, спасибо за ваш комментарий. Это разработка XPages, и мы в основном используем JavaScript –

ответ

1

Вы можете посмотреть на атрибут required каждого элемента управления, который должен быть проверен, и проверить, какая кнопка представляет форму. Tommy Vaaland имеет функцию, которая делает это:

// Used to check which if a component triggered an update 
function submittedBy(componentId){ 
try { 
    var eventHandlerClientId = param.get('$$xspsubmitid'); 
    var eventHandlerId = @RightBack(eventHandlerClientId, ':'); 
    var eventHandler = getComponent(eventHandlerId); 
    if(!eventHandler){ return false; } 

    var parentComponent = eventHandler.getParent(); 
    if(!parentComponent){ return false; } 

    return (parentComponent.getId() === componentId); 
} catch(e){ /*Debug.logException(e);*/ } 
} 

Ссылка: http://dontpanic82.blogspot.co.uk/2010/03/xpages-making-validation-behave.html

+0

Привет, Роб, спасибо за ваш ответ. Кажется, это путь. Я попробую это и дам всем знать –

+0

Привет, Роб, это работает очень хорошо. Фактически вы можете реализовать эту проверку для свойства «disableValidators» (можно найти на вкладке «Все свойства» в разделе «данные») поля. Таким образом, если ваше поле содержит более одного валидатора и/или более сложных валидаторов, вам не нужно добавлять его к каждому из них. –

+0

Спасибо @ Даниэль Ф. Как я часто нахожу, отвечая на вопрос здесь, я узнаю больше о технологии с каждым ответом, который я предоставляю :-) –

1

Вы можете посмотреть на использование клиентской базы боковой вид проверки, такие как петрушка: http://parsleyjs.org

Это может быть, конечно, в сочетании с подтверждение на стороне сервера, по крайней мере, для окончательного представления.

+0

Привет, спасибо, за ваш ответ. Есть ли у вас опыт использования в сочетании с Bootstrap? –

+0

Да, я использую Parsley в проекте, который использует Bootstrap. –

Смежные вопросы