2012-01-12 3 views
0

私はjQueryを使ってテキストフィールドでオートコンプリートを行っています。そのオートコンプリートからのユーザーのクリックに基づいて、私はajaxリクエストを行う別の関数を呼び出したいと思う。どのようにこれをすることができaccomplished.Hereは、最初のオートコンプリート機能である:Ajaxを別のAjaxから呼び出す

function lookup(inputString) { 
    if(inputString.length == 0) { 
     // Hide the suggestion box. 
     $('#suggestions').hide(); 
    } else { 
     $.post("ajax/autocomplete.php", {queryString: ""+inputString+""}, function(data){ 
      if(data.length >0) { 
       $('#suggestions').show(); 
       $('#autoSuggestionsList').html(data); 
      } 
     }); 
    } 
} // lookup 

function fill(thisValue) { 
    $('#inputString').val(thisValue); 
    setTimeout("$('#suggestions').hide();", 200); 
} 

と第二AJAX呼び出し:

function showCar(str) 
{ 
if (str=="") 
{ 
document.getElementById("inputString").innerHTML=""; 
return; 
} 
if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
xmlhttp=new XMLHttpRequest(); 
} 
else 
{// code for IE6, IE5 
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.onreadystatechange=function() 
{ 
if (xmlhttp.readyState==4 && xmlhttp.status==200) 
{ 
document.getElementById("carchoice").innerHTML=xmlhttp.responseText; 
} 
} 
xmlhttp.open("GET","ajax/getcar.php?q="+str,true); 
xmlhttp.send(); 
} 

とフォームから関数への最初の呼び出し:

<input type="text" size="50" value="" id="inputString" onkeyup="lookup(this.value);" onblur="fill();"/> 
<div class="suggestionsBox" id="suggestions" style="display: none;"> 
      <img src="images/upArrow.png" style="position: relative; top: -12px; left: 30px;" alt="upArrow" /> 
      <div class="suggestionList" id="autoSuggestionsList"> 
       &nbsp; 
      </div> 
+2

なぜ1つのAJAX呼び出しでjQueryを使用し、もう1つのAJAX呼び出しでネイティブXMLHTTPを使用していますか? –

+0

um ..私はちょうどその混乱を書き直すだろう、あなたはjQueryの。ポスト()&非jQueryのajaxコールがありますか?あなたはそれを考えずにコピー&ペーストしたように見えます。 – Jakub

+0

私は知らない? :)私は他の例に基づいてjQueryオートコンプリートを行う方法しか知りませんでしたが、jQueryのajax関数の経験はほとんどありません – savagenoob

答えて

2

次のコード行を使用して呼び出すことができます。

$('#autoSuggestionsList').children('div').click(function() { 
    showCar(this.innerHTML); 
}); 
子であるあなたが新しいdiv要素にそれぞれの結果を入れている場合はもちろん

#autoSuggestionsListへ:

<div class="suggestionList" id="autoSuggestionsList"> 
    <div>First result</div> 
    <div>Second result</div>     
</div> 

とフィドル:http://jsfiddle.net/NaYzm/

よろしく!

+0

ありがとう、建設的な助け! – savagenoob

+0

あなたは大歓迎です:-) –

+1

私は実際にjavascriptを書き換えます。少なくとも、showCar()の代わりにすべてjQueryを作成してください。 – Jakub