Отключить сохранение формы после ручного ввода даты в datepicker в OctoberCMS

#forms #datepicker #save #octobercms

#формы #datepicker #Сохранить #octobercms

Вопрос:

Когда я использую виджет выбора даты в серверной форме, и пользователь вводит дату вручную, форма сохраняется при нажатии enter в этом поле; Есть ли какой-либо способ отключить это поведение?

мой файл yaml

 fields:
    field_1:
        label: field_1
        type: text
        span: storm
        cssClass: col-xs-4
        attributes:
            tabindex: 1
    field_2:
        label: field_2
        type: text
        span: storm
        cssClass: col-xs-4
        attributes:
            tabindex: 2
    date:
        label: 'date, don't press enter!'
        mode: date
        type: datepicker
        span: storm
        cssClass: col-xs-4
        attributes:
            tabindex: 3
  

Ответ №1:

Вам нужно будет сделать это на javascript.

Вы можете включить javascript несколькими способами — мой предпочтительный вариант — определить часть в ваших полях.yaml и поместите javascript в частичное. Вы также можете напрямую включить javascript в create.htm и/или update.htm файлы в plugins/foo/bar/controllers/baz/

Что-то вроде этого будет работать:

 $('form').on('keyup keypress', function(e) {
  var keyCode = e.keyCode || e.which;
  if (keyCode === 13) { 
    e.preventDefault();
    return false;
  }
});
  

Обратите внимание, что не рекомендуется изменять способ работы форм и нажатий клавиш — поведение браузеров, программ чтения с экрана и т. Д. По умолчанию, предположим, Что нажатие enter отправит форму. Я предлагаю вам внести это изменение, только если у вас есть небольшая выборка пользователей, которым вы можете передать эту информацию (или просто скажите им не нажимать enter, пока они не захотят отправить форму).