Отправка <apex:form> по нажатию Enter без page reload
Приветствую, с недавних пор я работаю с Salesforce и сейчас как раз разбираюсь с VF страницами. Была поставлена задача: "После ввода текста в inputField при нажатии Enter данные улетают на Custom Controller и сразу текст появляется в определенном outputFiel, все должно происходить без page reload".
Мои попытки прикрутить JavaScript функции на слушание клавиш пользователя и вызове определенной actionFunction с атрибутом reRender, блока с полем в которые нужно занести новые данные, не дали результата, а стандартный функционал, по крайней мере то что я пролопатил, дает возможность делать это только через commandButton и commandLink.
Буду благодарен если подскажите как можно реализовать такое поведение.
Вот рабочий костяк, но при нажатии Enter страница перезагружается.
У тебя нет сабмита формы. Используй commanButton или commandLink. Просто повесь на нажатие enter клик по сабмит кнопке. В кнопке в атрибуте rerender указывай ид элемента для рефреша.
PS В контроллере лучше используй properties. public String name {get; set;}
Спасибо за ответ, я уже пробовал такой подход, почему-то форма все-равно отправлялась через релоад. Я попробую еще раз реализовать такую функцию немного по другому и отпишу.
Смотри, что у тебя может быть не так: если ты перехватываешь event на кнопке, например onclick, в конце обязательно ставь return false; Если его не поставишь то страница пойдет на перезагрузку. Ну и если используешь такую логику то лучше использовать простой <button> а не <apex:commandButton> В остальном логика абсолютно правильная, и я ее постоянно использую. Еще один совет - смотри консоль. Если до return false в обработчике события будет ошибка, то выполнение кода остановится и страница уйдет на перезагрузку (часто сбивает с толку)
если ты перехватываешь event на кнопке, например onclick, в конце обязательно ставь return false; Если его не поставишь то страница пойдет на перезагрузку.
Сделал как вы говорили но страница идет в перезагрузку все-равно. Сделал и через commandButton и через обычную кнопку и actionFunction, результат одинаковый. Может у меня что-тов JS коде не так? (JQuery только начинаю работать)
Без изменений, при нажатии на кнопку actionFunction срабатывает хорошо, display обновляется, при нажатии Enter - reload.
Как я уже говорил, я начинающий в JS и JQuery, до этого просто пробовал, ничего особенного. Вы уверены что возврат false из функции в таком виде должен остановить перезагрузку страницы?
А вообще ты явно не первый с такой проблемой, а гугл большой, надо просто поискать.
Вчера лазил... не нашел толкового подхода, так и не получилось, поэтому написал суда. Про event не совсем понял, как его можно дернуть и отправить false.