Как я могу отправить форму в RoR при каждом изменении входного текстового поля? - PullRequest
3 голосов
/ 25 октября 2008

Я использую Ruby on Rails.

Я хочу создать поле фильтра на странице таким образом, чтобы при изменении значения поля ввода я фильтровал список, показанный ниже, через ajax. (Точно так же, как поиск пользователей работает в Stackoverflow)

На данный момент я запустил его с form_remote_tag, содержащим text_field_tag ​​и submit_tag, и он фильтрует мой список, когда я нажимаю кнопку подтверждения. Я хотел бы удалить кнопку отправки и выполнять фильтрацию каждый раз, когда изменяется значение ввода текста. Как я могу инициировать отправку формы каждый раз, когда изменяется текст в поле ввода?

Я попробовал внутри формы

<%= text_field_tag (:filter), "" , :onchange => "alert ('This is a Javascript Alert')" %>

просто чтобы получить событие onchange, но почему-то даже это предупреждение не появляется ...

Ответы [ 2 ]

4 голосов
/ 25 октября 2008

Используйте наблюдаемое поле помощник с одним входом, как показано ниже:

<%= text_field_tag 'filter' %>
<%= observe_field 'filter', 
    :url => {:controller => 'your_controller', :action => 'filter'},
    :frequency => 1.2,
    :update => 'results',
    :with => "'typed_filter=' + $('filter').value" %>

А затем просто напишите контроллер, который, учитывая параметр с именем 'typed_filter', отображает результаты, которые будут показаны в элементе с идентификатором 'results' (возможно, div).

3 голосов
/ 25 октября 2008

Обычно для ввода текста вы хотите использовать события onkeypress, onkeyup, onkeydown, а не onchange для этого типа автозаполнения. Решение @Ricardo Acras намного лучше, чем написание собственного, но я подумал, что вы, возможно, захотите знать, что onchange не работает, потому что он не срабатывает, пока вы не выйдете из текстового ввода (и текст не был изменен). 1001 *

Я считаю, что w3schools.com - отличный источник информации такого рода. Здесь есть страница в Javascript HTML DOM. И здесь является ссылкой на событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...