typeahead не может быть вызван внутри другой функции - PullRequest
0 голосов
/ 30 июня 2018

каждый раз, когда я вызываю функцию сценария typeahead внутри любых функций дать typeahead не определенная ошибка HTML-код:

<select id ='options' name='options' class='form-fields' onchange="myFunction();">
                                          <option value='0' >Pick Type</option>
                                          <option value="1" selected >train</option>
                                          <option value="2">bus</option>
                                        </select> 

этот код JavaScript:

<script> 
   //typeahead changing according to selecting script 
function myFunction() { 
var option = document.getElementById("options").value;
if (option =='1'){
console.log(option);
$('input.typeahead').typeahead({
source:  function (query, process) {
return $.get('typeahead-train.php', { query: query }, function (data) {
        console.log(data);
        data = $.parseJSON(data);
        return process(data);
    });
   }
});


}else if(option =='2'){
console.log(option);
$('input.typeahead').typeahead({
source:  function (query, process) {
return $.get('typeahead-publiccairo.php', { query: query }, function (data) {
        console.log(data);
        data = $.parseJSON(data);
        return process(data);
    });
   }
});


}

}

у меня есть aleady 'typeahead.js',

1 Ответ

0 голосов
/ 01 июля 2018

Я решил это, вызвав функцию onchange внутри функции typeahead, как показано ниже: -

  <script>
 function myFunction() { //return diffrent values with different select options
 var option = document.getElementById("options").value;
 if (option==1){
     typeahead ='typeahead-train.php';
   }
   else if (option ==2){
    typeahead ='typeahead-publiccairo.php';
   }
   window.typeahead=typeahead;
  return typeahead;
}
    $('input.typeahead').typeahead({
source:  function (query, process) {
return $.get(myFunction()/*onchange function called here*/, { query: query }, function (data) {
        console.log(data);
        data = $.parseJSON(data);
        return process(data);
    });
   }
});

...