2012-04-14 9 views
1

AJAX要求を送信することにより、メール作成フォームをロードするアプリケーションイムにAJAXロードされたフォーム内に動作していないjqueryのオートコンプリートがレール私のレールで

私compose.jsファイルのコードは、「(

$です#main ')。html( "<%= jレンダリング:部分=>" smails/form "%>");

私の作成フォームには、jQueryオートコンプリート・プラグインを使用してオートコンプリート・フィールドを実装しました。このプラグインは、ajaxを使わずにフォームをロードするとうまく動作します。これは私がdocument.readyを使用しているからだと思いますが、他のものを使う方法はわかりません。私autocomlete.js.coffeeファイルの

コードが

$(document).ready -> 
    split = (val) -> 
    val.split /,\s*/ 
    extractLast = (term) -> 
    split(term).pop() 
    $('#smail_receiver').autocomplete 
      source: "/autocomplete/users" 
      search: -> 
       term = extractLast(@value) 
       false if term.length < 2 
      focus: -> 
       false 
      select: (event,ui) -> 
       terms = split(@value) 
       terms.pop() 
       terms.push ui.item.value 
       terms.push "" 
       @value = terms.join(",") 
       false 

また、私はおそらく、「上」は、結合が、あなたは自分を呼び出すことができますを使用して、より良い方法はあり

+0

間違っていることをより正確にしてください。ブラウザのコンソールにエラーがありますか? '$( 'smail_receiver')。autocomplete'行の直前に' console.log 'foo''行を置くとどうなりますか? –

答えて

1

document.onてみました:

$('#smail_receiver').autocomplete 

フォームを作成するajax呼び出しの成功メソッドです。また、フォームがレンダリングされた後、compose.jsファイルに配置することもできます。

上記のように、おそらくちょっとした解決策がありますが、これはトリックです。

+0

これは、compose.js にその行を追加し、ここからdocument.readyを削除することを意味しますか? –

+0

まだまだ動いていません。詳細を教えてください... –

+0

はい、document.readyからautocomplete行を削除し、compose.jsに(フォームのレンダリング後に)広告してください。そうすれば、レンダリングされたフォームのコントロールにアタッチされていることを確認できます。まだ動作していない場合は、試行錯誤して、何かが縛られているかどうかを確認します(つまり、そのテキストフィールドのkeyupイベントに警告を出します)。それがうまくいく場合は、オートコンプリートコードに含まれている可能性があります。 –

関連する問題