我有一个带有文本字段的表单,它使用jQuery-UI自动完成小部件。
我正在使用带有Ruby on Rails的<li id="activity_<%= activity.id %>"><%= link_to activity.address, edit_activity_path(activity), :remote => true %></li>
由于在document.ready之后加载表单,自动完成jQuery小部件不会绑定到DOM元素。
由于这不是一个jQuery AJAX调用,我不认为在Ajax调用之后我可以用来绑定自动完成小部件的成功回调。
我不知道如何使用我在自动完成窗口小部件中看到的.on()函数,因为语法是$('selector')。autocomplete
有人可以帮忙吗?
这是edit.js.erb文件:
$("#activity_form").html("<%= escape_javascript(render(:partial => "form"))%>");
这是我的jQuery代码,用于将自动完成小部件绑定到我的文本字段。
jQuery ->
$('[type="text"][name*="[geocode_location]"]').autocomplete
source: (request, response) ->
$.ajax
url: "http://ws.geonames.org/searchJSON"
dataType: "jsonp"
data:
featureClass: "P"
style: "full"
maxRows: 12
name_startsWith: request.term
success: (data) ->
response $.map(data.geonames, (item) ->
label: item.name + ((if item.adminName1 then ", " + item.adminName1 else "")) + ", " + item.countryName
value: item.lat + ", " + item.lng
)
minLength: 2
open: ->
$(this).removeClass("ui-corner-all").addClass "ui-corner-top"
close: ->
$(this).removeClass("ui-corner-top").addClass "ui-corner-all"
focus: (event, ui) ->
event.preventDefault()
$(this).val ui.item.label
select: (event, ui) ->
event.preventDefault()
$(this).val ui.item.label
$(this).siblings('[name*="[geocode_ll]"]').val ui.item.value
答案 0 :(得分:2)
我在这里读到了每个Rails Ajax调用可以绑定的6个自定义事件,包括ajax:成功,只要成功的ajax请求就会触发。
所以我做了$(this).bind“ajax:success”,它允许$(this)这是本例中的整个窗口,在任何“ajax:success”事件之后触发其他一些函数。
所以,我最终这样做了:
jQuery ->
$(this).bind "ajax:success", ->
jQuery ->
$('[type="text"][name*="[geocode_location]"]').autocomplete
--REST OF CODE--
答案 1 :(得分:1)
我有类似的情况,在ajax调用后渲染包含自动完成输入字段的部分时,自动完成功能不再起作用。我正在使用rails3-jquery-autocomplete
宝石。
问题很简单,所有自动完成输入字段仅绑定到初始文档加载时的自动完成功能。要再次绑定新的自动填充字段,只需调用以下函数:
jQuery('input[data-autocomplete]').railsAutocomplete();
答案 2 :(得分:0)
$( '[类型= “文本”] [名* = “[geocode_location]”]')。住( “自动完成”, function(){your code})
请尝试。