1

jQuery-UIオートコンプリートウィジェットを使用するテキストフィールドを持つフォームがあります。RubyonRailsでAJAXを使用してこのフォームを部分的にロードしています<li id="activity_<%= activity.id %>"><%= link_to activity.address, edit_activity_path(activity), :remote => true %></li>

フォームはdocument.readyの後に読み込まれるため、オートコンプリートjQueryウィジェットはDOM要素にバインドされていません。

これはjQueryAJAX呼び出しではないため、Ajax呼び出しの後にオートコンプリートウィジェットをバインドするために使用できる成功コールバックはないと思います。

構文が$('selector')。autocompleteであるため、オートコンプリートウィジェットで見た.on()関数の使用方法がわかりません。

誰か助けてもらえますか?

これは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
4

3 に答える 3

2

ここでは、各Rails Ajax呼び出しがバインドできる6つのカスタムイベントについて説明しました。これには、ajaxリクエストが成功するたびに発生するajax:successが含まれます。

http://net.tutsplus.com/tutorials/javascript-ajax/using-unobtrusive-javascript-and-ajax-with-rails-3/

そこで、$(this).bind "ajax:success"を実行しました。これにより、この場合はウィンドウ全体である$(this)が、 "ajax:success"イベントの後に他の関数を起動できるようになります。

だから、私はこれをすることになりました:

jQuery ->
  $(this).bind "ajax:success", -> 
    jQuery ->       
      $('[type="text"][name*="[geocode_location]"]').autocomplete
       --REST OF CODE--
于 2012-11-06T22:38:52.250 に答える
1

同様のケースがありました。ajax呼び出しの後にオートコンプリート入力フィールドを含むパーシャルをレンダリングすると、オートコンプリートが機能しなくなりました。私はrails3-jquery-autocomplete宝石を使っていました。

問題は、すべてのオートコンプリート入力フィールドが、最初のドキュメントロード時にのみオートコンプリート関数にバインドされることでした。新しいオートコンプリートフィールドを再度バインドするには、次の関数を呼び出すだけです。

jQuery('input[data-autocomplete]').railsAutocomplete();
于 2013-02-02T19:09:51.633 に答える
0

$('[type = "text"] [name * = "[geocode_location]"]')。live( "autocomplete"、function(){your code})

してみてください。

于 2012-11-06T12:57:50.857 に答える