2016-05-30 1 views
2

Ich habe ziemlich ausgiebig gesucht, um einen Weg zu finden, einen Link mit benutzerdefinierten Suchparametern via Datatables zu senden, aber nichts gefunden haben. Ich benutze Multifilter - https://datatables.net/examples/api/multi_filter.html.Datatables übergeben Suchparameter in der URL, so dass ich die Links per E-Mail senden kann

Ich möchte, dass wenn ein Benutzer nach einem bestimmten Vornamen sucht, diese Suche an die URL angehängt wird, damit der Benutzer eine E-Mail an die spezifische Ergebnismenge senden kann, nach der er gesucht hat.

You can see in the image below an example.

Antwort

0

Also, was Sie wollen, ist Benutzer alle Such Filter und E-Mail kopieren können. Wie wäre es mit diesem Ansatz? -

  1. Richtig ein JS, URL zu konstruieren. Nennen Sie es onblur aller Suchfelder.
  2. Konstruiert URL in einer Textbox halten Aktualisierung wird
  3. Geben Sie Benutzer auf eine Schaltfläche „Copy Suchparameter“ (kann nur lesbar oder verborgen sein) Inhalt der URL Textbox in die Zwischenablage einfügen und kopiert E-Mail URL
  4. Benutzer kopieren .

Auf diese Weise werden wir nicht mit der tatsächlichen URL URL vermasseln.

Siehe this zum Kopieren in die Zwischenablage.

1

ich meinen früheren Vorschlag gelöscht haben über die Verwendung von keepConditions, da es nicht in Ihrem Anwendungsfall nicht funktioniert (getestet I), aber es hat mir denken, und ich habe mit diesem kommen:

$('#example tfoot th').each(function(k, v){ 
    var title = $(this).text(); 
    $(this).html('<input type="text" data-position="'+k+'" placeholder="Search ' + title + '" />'); 
});  
var example = $("#example").DataTable(); 
example.columns().every(function(){ 
    var that = this; 
    $('input', this.footer()).on('keyup change', function(){ 
     var hash = []; 
     $('#example tfoot th').each(function(k, v){ 
      if(~~$(v).find("input").val().length){ 
       hash.push($(v).find("input").data("position") + "=" + encodeURIComponent($(v).find("input").val())); 
      } 
     }); 
     window.location.hash = hash.join("&"); 
     if(that.search() !== this.value){ 
      that.search(this.value).draw(); 
     } 
    }); 
}); 
if(window.location.hash) { 
    var hash = window.location.hash.substring(1).split("&"); 
    $.each(hash, function(k, v){ 
     $("#example tfoot th input:eq("+v.split("=")[0]+")").val(decodeURIComponent(v.split("=")[1])).trigger("change"); 
    }); 
} 

Grundsätzlich Jedes Mal, wenn ein Suchbegriff eingegeben wird, durchlaufen wir alle Eingaben und aktualisieren den URL-Hash mit den Ergebnissen. Dann stellen wir sicher, dass wir darauf achten, ob es einen Hash gibt, und führen den umgekehrten Vorgang aus. Dies ist eine funktionierende example.

Hoffe, dass hilft.

+0

Ihr Beispiel Link funktioniert nicht. – Mike

+0

Hi @Mike, Link jetzt korrigiert, mein Fehler für das Fehlschlagen :-( – annoyingmouse

+0

Wie initialisierst du das DataTable? Ich sehe, dass Sie den Spaltenfilter in der Fußzeile verwenden, aber ich sehe nicht, wo Sie es initialisiert haben ? – Mike

Verwandte Themen