我有一个带有使用 jQuery-UI 自动完成小部件的文本字段的表单。我正在使用 AJAX 和 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