2017-01-24 3 views
0

私の下のスクリプトでライブ検索を行っており、完全に機能しています。この問題は、ユーザーが希望の結果をクリックしてテキストボックスに挿入されたときにChromeに表示されますが、Firefoxでは失敗しています。ライブ検索の結果をテキストボックスに入力

第2に、テキストのみをテキストボックスに挿入するのではなく、htmlタグも挿入します。私が望むのは、テキストだけです。

$(function() { 

    $(".search_tab").keyup(function() { 
     var searchid = $(this).val(); 
     var dataString = 'color=' + searchid; 
     if (searchid != '') { 
      $.ajax({ 
       type: "POST", 
       url: "../search.php", 
       data: dataString, 
       cache: false, 
       success: function(html) { 

        $("#result").html(html).show(); 
       } 
      }); 
     } 
     return false; 
    }); 

    $("#result").on("click", function(e) { 
     var $clicked = $(e.target); 
     if (!$clicked.hasClass("search")) { 
      $('input.search_tab').val(event.target.innerHTML); 
      jQuery("#result").fadeOut(); 
     } 
    }); 

    $('.search_tab').click(function() { 
     jQuery("#result").fadeIn(); 
    }); 

}); 

答えて

-1

textContentの代わりに、このようなinnerHTML

$('input.search_tab').val(e.target.textContent); 
+0

その作業ができますが、それは動作しないということで、この答えを受け入れた理由Firefoxの – user6579134

+0

に私はわからないではありません。 'event'は定義されていないので、' event.target'を実行すると、ChromeやIE以外のすべてのブラウザにエラーがスローされます。 – Santi

+0

'event'は' e'でなければなりません。 @サンティあなたはちょうどそれを言ったことができます。彼が提供したコードを見ると、コールバックのパラメータは 'e'ではなく' event'であると思っていました。 –

0

あなたはこの変更する必要がありjQuery.text方法

$('input.search_tab').val($clicked.text()); 
0

を使用することができます。THIに

success: function(html) { 

       $("#result").html(html).show(); 
      } 

をS:

  success: function(html) { 

       $("#result").html(html.d).show(); 
      } 

そして、あなたはテキストだけしたい場合:

$("#result").html($(html.d).text()).show(); 
1

を私はここに他の回答に同意できません。 に電話をかけることはできません。eventは未定義です。イベントパラメータはeで、eventではありません。

ChromeとIEは、eventが定義されていない場合はeventを提供するので、これで問題はありませんが、他のブラウザ(Firefoxなど)はそうではありません。


あなたはすでにここにクリックされた要素を保存:

var $clicked = $(e.target); 

なぜのみ突然event.target.innerHTMLに切り替えるには、これを保存しますか?

代わりにこれを行います。

$("#result").on("click", function(e) { 
    var $clicked = $(e.target); 
    if (!$clicked.hasClass("search")) { 
     $('input.search_tab').val($clicked.text()); 
     $(this).fadeOut(); 
    } 
}); 

私は単にあなたがすでに使用していた$clicked変数を使用してFirefoxの問題を修正しました。テキストのみ(HTMLではなく)のみを取得するために、私はjQueryの.text()を使用しました。

の作業例:https://jsfiddle.net/yuztjbva/4/

関連する問題