2012-04-14 52 views
1

在我的Rails應用程序即時發送Ajax請求加載撰寫郵件形式的AJAX加載表格內工作jQuery的自動完成不軌

我compose.js文件的代碼是

$(」 #main')。html(「<%= j render:partial =>」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 

我也嘗試document.on

+0

請更精確地說明發生了什麼問題。瀏覽器控制檯中是否有錯誤?如果你在'$('#smail_receiver')autocomplete'行之前放置'console.log'foo'',會發生什麼? – 2012-04-14 14:39:25

回答

1

有可能是通過使用「的」約束力,但你可能只是打電話給你一個更好的方法:

$('#smail_receiver').autocomplete 

在創建窗體的ajax調用的成功方法中。表單呈現後,您也可以將它放入compose.js文件中。

如上所述,可能存在一個更加整潔的解決方案,但這可以解決問題。

+0

您的意思是在compose.js 中添加該行並從此處移除document.ready? – 2012-04-14 06:45:22

+0

嘿,好友仍然沒有工作。請詳細說明... – 2012-04-14 07:10:18

+0

是的,從document.ready中移除自動完成行,並將它們添加到compose.js中(在表單呈現之後)。這樣你可以確定它被附加到呈現形式的控件上。如果它仍然無效,我會做一些試驗和錯誤,看看是否有什麼限制(即在該文本字段上的關鍵事件上發出警報)。如果可行,那麼可能是在你的自動完成代碼中。 – 2012-04-14 08:42:25