2013-12-24 2 views
8

Простой пример:Как предотвратить ввести ключ представить в рельсы

<%= 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?

Есть хорошие решения?

ответ

16

Введите ключ submit не проблема с рельсами, это проблема с HTML/JS

Rails - это бэкэнд (живет на сервере), HTML/JS - это клиентская сторона (в браузере) - они определяют, какие функции onality включен/выключен

Я хотел бы получить вокруг проблемы, как это:

#app/assets/javascripts/application.js 
$("form").on("keypress", function (e) { 
    if (e.keyCode == 13) { 
     return false; 
    } 
}); 

Хорошей ссылки: How to prevent ENTER keypress to submit a web form?

+0

Это не работает для меня. Также попробовали поставить скрипт прямо в моей форме. Должен ли $ («form») быть чем-то другим, если я использую 'form_tag'? – sixty4bit

+0

'form' - это элемент HTML-элемента - вы вообще используете' Turbolinks'? –

1

Это не конкретный вопрос Rails это, так как это родное поведение всех браузеров. Если у вас есть кнопка отправки в вашу форму (и вы должны :)), то каждый браузер отправит форму после входа в нее. * Я не проверял, но даже без четкой кнопки отправки он должен это сделать] Принятый ответ правильный, но поскольку есть нить, которая дает более сложный пример, я бы тоже прошел через это:

Prevent users from submitting a form by hitting Enter

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