2012-01-12 4 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); 
} 

и второй Аякса вызов:

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

Почему вы используете jQuery для одного вызова AJAX и собственного XMLHTTP для другого? –

+0

umm .. Я бы просто перезаписал этот беспорядок, у вас есть jQuery .post() & then non jQuery ajax call? Похоже, вы просто копируете и вставляете это, не думая об этом. – Jakub

+0

Я не знаю? :) Я только знал, как сделать автозаполнение jQuery на основе другого примера и мало опыта работы с функциями ajax jQuery – 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 tho ... по крайней мере, сделаю все jQuery вместо 'showCar()' thing. – Jakub

Смежные вопросы