3

Ruby on Rails を使用しています。

入力フィールドの値が変更されるたびに ajax を介して以下に示すリストをフィルター処理するように、ページにフィルター フィールドを作成したいと考えています。(ユーザー検索が Stackoverflow で機能するのとまったく同じです)

今のところ、text_field_tag と submit_tag を含む form_remote_tag を使用して実行し、送信ボタンを押すとリストがフィルター処理されます。送信ボタンを削除し、テキスト入力の値が変化するたびにフィルタリングを実行したいと考えています。入力フィールドのテキストが変更されるたびにフォーム送信をトリガーするにはどうすればよいですか?

私は自分のフォームの中で試しました

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

onchangeイベントを取得するだけですが、どういうわけかこのアラートも表示されません...

4

2 に答える 2

4

次のコードのように、 observe_fieldヘルパーを単一の入力で使用します。

<%= 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」という名前のパラメーターを指定して結果をレンダリングするコントローラーを作成します。これは、id「results」(おそらく div) を持つ要素に表示されます。

于 2008-10-25T17:24:01.903 に答える
3

一般に、テキスト入力では、このタイプのオートコンプリートでは onchange ではなく、onkeypress、onkeyup、onkeydown イベントを使用します。@Ricardo Acrasのソリューションは、独自に作成するよりもはるかに優れていますが、テキスト入力から移動するまで起動しないため(およびテキストが変更されるまで)onchangeが機能しないことを知りたいと思うかもしれません。

w3schools.com は、この種の情報の優れたリソースであることがわかりました。Javascript HTML DOM に関するページがありますそして、ここにイベントの参照があります。

于 2008-10-25T18:39:49.863 に答える