2016-04-04 6 views
1

Ich habe eine searchbar mit der livesearch.com Funktionalität enthalten von ajaxlivesearch.comkann ich einige Hinweise auf ajaxlivesearch.com Funktion in Jquery verwenden

Das Problem ist, wenn ich auf ein Ergebnis klicken nichts passiert. Ich möchte eine Abfrage senden und eine Ergebnisseite anzeigen, wenn ich auf das Ergebnis klicke. Bevor ich die AJAXLIVESEARCH-Funktion eingab, habe ich einfach ein Schlüsselwort eingegeben und Enter gedrückt und dann meine Ergebnisseite angezeigt, dies geschieht mit einer Abfrage. Aber nachdem ich die AjaxliveSearch-Funktion hinzugefügt hatte, war Enter keine Option mehr, nichts passiert.

Ich denke, das Problem liegt innerhalb dieser jQuery Zeilen;

jQuery(".mySearch").ajaxlivesearch({ 
    loaded_at: <?php echo $time; ?>, 
    token: <?php echo "'" . $token . "'"; ?>, 
    maxInput: <?php echo $maxInputLength; ?>, 
    onResultClick: function(e, data) { 
     // get the index 1 (second column) value 
     var selectedOne = jQuery(data.selected).find('td').eq('1').text(); 

     // set the input value 
     jQuery('.mySearch').val(selectedOne); 

     // hide the result 
     jQuery(".mySearch").trigger('ajaxlivesearch:hide_result'); 
    }, 
    onResultEnter: function(e, data) { 
     // do whatever you want 
     // jQuery(".mySearch").trigger('ajaxlivesearch:search', {query: 'test'}); 
    }, 
    onAjaxComplete: function(e, data) { 
     // do whatever you want 
    } 
}); 

Ich hoffe, jemand kann mir helfen

Prost!

Antwort

0

Bevor Sie etwas tun, gehen Sie auf die ajaxlivesearch.js-Datei, und finden diese Codezeile ->

// disable the form submit on pressing enter 
     form.submit(function() { 
      return false; 
     }); 

Im Grunde ist es das Deaktivieren geschieht etwas bilden, wenn Sie die Eingabetaste drücken, welche Art des anderen ist was du versuchst zu tun. Also müssen Sie es natürlich ändern, z.

$("#search_ls_query").submit(function(){ 
      return true; 
     }); 

Jetzt (Das ist nicht ganz unverzichtbare Ergänzung, aber dennoch, senden Sie das Formular in dem "onResultEnter" Bereich, den Sie Ihre Index-Seite hinzufügen. Bsp.

jQuery(document).ready(function(){ 
jQuery(".mySearch").ajaxlivesearch({ 
    loaded_at: <?php echo $time; ?>, 
    token: <?php echo "'" . $token . "'"; ?>, 
    maxInput: <?php echo $maxInputLength; ?>, 
    onResultClick: function(e, data) { 
     // get the index 0 (1st column) value 
     var selectedOne = jQuery(data.selected).find('td').eq('0').text(); 

     // set the input value 
     jQuery('.mySearch').val(selectedOne); 

     // hide the result 
     jQuery(".mySearch").trigger('ajaxlivesearch:hide_result'); 
    }, 

    onResultEnter: function(e, data) { 
     $("#search_ls_query").submit(); 

    }, 
    /* #search_ls_query is the id of the default form that is submitted when you press enter (Find in ajaxlivesearch.js)*/ 

    onAjaxComplete: function(e, data) { 
    } 
}); 

})

Nun zur ajaxlivesearch.js Datei gehen und diese finden:

var wrapper = '<div class="' + ls.container_class + '">' + 
       '<form accept-charset="UTF-8" class="' + ls.form_class + '" id="' + ls.form_class + '_' + elem_id + '" name="ls_form">' + 
       '</form>' + 
       '</div>'; 

und fügen Sie eine Aktion dieser Form Dies wird aktiviert, wenn Sie in der Suchleiste die Eingabetaste drücken. Also machen Sie es so:

var wrapper = '<div class="' + ls.container_class + '">' + 
       '<form accept-charset="UTF-8" action="search.php" class="' + ls.form_class + '" id="' + ls.form_class + '_' + elem_id + '" name="ls_form">' + 
       '</form>' + 
       '</div>'; 

So hat es tatsächlich ein Ziel, an das die Werte gesendet werden sollen. Der Name des gesendeten Werts lautet also "ls_query". Daher wird jetzt in den Wert von "ls_query" eingefügt, was auch immer Sie in die Leiste eingeben. Sobald Sie also die Eingabetaste drücken und auf Ihrer neuen Seite ankommen, können Sie diese Variable verwenden, um Ihre Suchoptionen zu filtern, oder was immer Sie benötigen. Zum Beispiel auf der Suchseite können Sie schreiben:

$ls_query = secure($_GET['ls_query'],$mysqli);  

    $sql = "SELECT * 
    FROM users 
    WHERE username ='$ls_query'"; 

Das ist mir eine Weile gedauert, aber auch, um herauszufinden. Aber wenn Sie immer noch nach der Antwort suchen, hat das für mich funktioniert. Lass mich wissen, wie es gelaufen ist!

Verwandte Themen