Как предотвратить ввод ключа ввода в рельсы
Простой пример:
<%= form_for :post, url: posts_path do |f|%>
<p>
<%= f.label :title%><br/>
<%= f.text_field :title%>
</p>
<p>
<%= f.label :text%><br/>
<%= f.text_area :text%>
</p>
<p>
<%= f.submit%>
</p>
<%end%>
Я думаю, что это обработка событий по умолчанию Rails. Здесь, если пользователь нажимает клавишу ввода, он отправляет params
.
Но в моем случае я должен использовать ключ ввода для другого события.
Мне нужно искать users
с другим полем ввода, нажав клавишу ввода.
Но если я использую form_for
, он отправляет форму.: (
Как я могу предотвратить отправку с помощью клавиши ввода в rails
?
Нужно ли использовать простые теги html? Как <form> tag
и <submit> button
?
Любые хорошие решения?
Ответы
Ответ 1
Ввод ключа ввода - это не проблема рельсов, а проблема HTML/JS
Rails - это бэкэнд (живет на сервере); HTML/JS на стороне клиента (в реальном времени в браузере) - они определяют, какие функции включены/отключены
Я бы обошел вашу проблему так:
$('form').on('keypress', e => {
if (e.keyCode == 13) {
return false;
}
});
А если вы используете Turbolinks:
$(document).on('turbolinks:load', () => {
$('form').on('keypress', e => {
if (e.keyCode == 13) {
return false;
}
});
});
Полезная ссылка: Как предотвратить нажатие клавиши ВВОД при отправке веб-формы?
Ответ 2
Это не конкретный вопрос Rails, поскольку он является естественным поведением всех браузеров. Если у вас есть кнопка отправки в вашу форму (и вы должны:)), то каждый браузер отправит форму после входа в нее. * Я не проверял, но даже без четкой кнопки отправки он должен это сделать]
Принятый ответ правильный, но поскольку есть поток, который дает более сложный пример, я бы тоже прошел через него:
Запретить пользователям отправлять форму, нажав Enter