0

私はJquery UIオートコンプリートプラグインを使用しようとしています。私はクリック可能なリンクを使って提案ボックスにHTMLをレンダリングしたいと思います。 HTMLは、私がリンクをクリックしたときしかし、彼らは動作しないと私は開発者のログに取得するには、[OK]をレンダリングするようだ:JQuery UIオートコンプリートでこのリンクをクリック可能にするにはどうすればよいですか? Uncaught TypeError

jquery-ui.min.js:239Uncaught TypeError: Cannot call method 'data' of null 

Uncaught TypeError: Cannot call method 'data' of null 
a.widget._create.menu.a.addClass.appendTo.mousedown.menu.selectedjquery-ui.min.js:239 
a.Widget._triggerjquery-ui.min.js:23 
a.widget.selectjquery-ui.min.js:252 
a.widget._createjquery-ui.min.js:247 
f.event.handlejquery.min.js:17 
f.event.add.k.i.handle.k jquery.min.js:16 

私は、構文をHTMLとjQuery側に次のコードを使用していますHamlがRailsの中にあります。最初のスクリプトタグでは、Underscore.jsでレンダリングするテンプレートを定義します。

This questionは、同様の問題を参照しているようだが、私は答えに"I think autocomplete uses an <a> for the element that provides the click event. In that case, you'll need to unset that click handler"

を理解していない私はどんな指導をいただければと思います!それは2日私はこれに立ち往生してきました。ありがとう!

rendered autocomplete menu screenshot

= text_field_tag :search, nil, :class => "jq_watermark", :id => "product-search-input", :title => "Keywords, Tags, Items, SKU..." 

%script(type="text/html" id="product-autocomplete-result-template") 
    .cell.img 
    %img(src='{{ main_image_thumb }}') 
    .cell 
    %h2= link_to '{{ label }}', CGI::unescape(product_path('{{ id }}')) 
    .clear 
    = link_to '{{ customer_count }} people have this', '#' 
    %span Rating {{ rating }} 
    %div{:id => "stars-wrapper-{{ id }}"} 
     %select= options_for_select([1, 2, 3, 4, 5]) 
    %a(href='http://www.google.com') 
     Click Me 
    .cell 
    = link_to "I have this", '#', :class => "button" 
    = link_to "I want this", '#', :class => "button" 

:javascript 
    $(document).ready(function(){ 

    $.ui.autocomplete.prototype._renderItem = function(ul, item) { 
     var template = $('#product-autocomplete-result-template').html(); 
     var parsed_template = _.template(template, item); 
     var target_option = 'value="' + item.rating + '"'; // do simple string replace to select option, as I can't get Jquery 
     var selected_option = target_option + ' selected="selected"'; 
     var autocomplete_html = parsed_template.replace(target_option, selected_option); 
     var returnVal = $("<li></li>") 
     .data("item.autocomplete", item) 
     .append('<a>' + autocomplete_html+'</a>') 
     .appendTo(ul); 
     $("#stars-wrapper-"+item.id).stars({ inputType: "select", disabled: true }); 
     return returnVal; 
    }; 

    $('#product-search-input').autocomplete({ 
      delay: 50, 
     source: function(request, response) { 
     $.ajax({ 
      url: "#{search_products_path}", 
      dataType: 'json', 
      data: { term: request.term }, 
      success: function(data) { 
      if (data.length < 1) { 
       console.log("Juuusstt right"); 
       // show submit button 
      } else { 
       console.log("Too long"); 
       // hide submit button 
      } 
      response(data); 
      } 
     }); 
     }, 
     select: function(event, ui) { 
     console.log(ui.item ? 
      "Selected: " + ui.item.label : 
      "Nothing selected, input was " + this.value); 
     } 
    }) 
    }); 
+0

あなたが選択してfalseを返す意味 'クリックハンドラがあること未設定'()。オートコンプリート()コードは正しく表示されますが、おそらくautocomplete_htmlをレンダリングするときのどこかにありますか? – Xnake

+0

jqueryオートコンプリートはjquery.ui.menuに依存し、そのファイルはイベントハンドラを自動完了リストの要素にバインドするという事実に関連していると思います。 Probは、それも私のテンプレートのものにそれらをバインドする...私は思う... – noli

+0

あなたの検索データが空である可能性はありますか?したがって、あなたは$( "

  • ").data( "item.autocomplete"、item).append( '' + autocomplete_html + '').appendTo(ul);を使ってメニュー項目をレンダリングします。 $( "
  • ")はnullです – Xnake

    答えて

    0

    私は、この猿はjqueryのの大部分にパッチを適用せずになんとかですという証拠を見つけることができません。しかし、YUI3は壮大な作品です。いいえ、あなたはすでにそれのための解決策を発見したことを推測していないが、より良い遅く、その後決して

    http://developer.yahoo.com/yui/3/autocomplete/

    +0

    このリンクは壊れています。 – rooby

    1

    イム周りに必要monkeyingません。

    これは最適な解決策ではありませんが、機能します。

    $(".yourLink").live('click', function() { 
        var yourLinkHref= $(this).attr('href'); 
        window.location = yourLinkHref; 
    
    }); 
    

    はそれが役に立てば幸い:)

    +0

    ありがとう、私はこれをテストすることはできませんので、私は少し前にプロジェクトを残しましたが、私はちょうどYUIと行くことになった – noli

    +0

    十分な公正。うまくいけば、それは同じ問題を持つ他の誰かを助けるでしょう。 – Jonas

    関連する問題