JSF2: отправить форму AJAX - PullRequest
       4

JSF2: отправить форму AJAX

1 голос
/ 03 сентября 2010

У меня есть страница со списком таблиц через нумерацию страниц AJAX, все на заказ. Разбиение на страницы работает правильно, но клавиша Enter очищает значения ввода формы вместо отправки. Кнопка «Отправить» создает запись AJAX, в результате чего таблица перезапускается и перерисовывается.

Как я могу убедиться, что все входные данные формы обрабатывают кнопку Enter и отправляют форму AJAX?

Это моя кнопка отправки:

<f:ajax execute="@form" render=":formlistproposta" onevent="showProgress">
  <h:commandLink styleClass="link" value="#{msg.menu_search_top_all}"    
                 actionListener="#{propostaBean.search}" onclick="clearForm();">
  </h:commandLink>
</f:ajax>

Как я могу убедиться, что всякий раз, когда я нажимаю клавишу Enter на любом из входных данных формы, мой AJAX будет отправляться?

Ответы [ 2 ]

2 голосов
/ 03 февраля 2012

Я решил это через jQuery, аналогично решению @ mmanco:

$('form input[type=text]').die('keydown').keydown(function(e){
    if(e.keyCode == 13 ) {
        $('form\\:submitButton').click();
        return false;
    }
});
2 голосов
/ 05 сентября 2010

Прежде всего, правильное поведение, которое вы описываете.На простой HTML-странице при нажатии на клавишу Enter внутри формы будет выбрана и нажата первая кнопка.В вашем случае, вероятно, кнопка <input type="reset"/> является первой в форме.

Я использовал прототип для достижения этой цели.

Вот пример сценариякоторая будет обрабатывать отправку формы при нажатии клавиши Enter:

var FormSubmissionHandler = Class.create({
    initialize: function(formId, submitterId) {
        this.form = $(formId);
        this.submitter = $(submitterId);
        Event.observe(this.form, 'keypress', this.onKeyPress.bindAsEventListener(this));
    },

    onKeyPress: function(event) {
        var code = event.keyCode;
        var element = Event.element(event);
        if(code == Event.KEY_RETURN) {
            var nodeName = element.nodeName;
            var isSelect = nodeName == 'SELECT';
            var isTextArea = nodeName == 'TEXTAREA';

            if(!isSelect && !isTextArea) {
                Event.stop(event);
                this.submitter.click();
            }
        }
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...