• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Tabelle mit Boostrap "Checkbox"-Button filtern

seppwert

New member
Hallo

Ich habe eine Tabelle, die aus einem array gespeist wird. Nun will ich die daraus entstehende Tabelle filtern (mithilfe der Checkbox-Buttons). Filtern will ich dabei nach dem Feld data.model im Array. Mir fehlt momentan noch der Ansatz wie ich da vorgehen kann.

HTML:
<!DOCTYPE html>
<html>
<head>
<title>test</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>    
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
<script src="https://maps.googleapis.com/maps/api/js?v=3&sensor=false&libraries=geometry"></script>
<br>
<div class="btn-group" data-toggle="buttons">
  <label class="btn btn-primary">
    <input type="checkbox"> BMW 1er
  </label>
  <label class="btn btn-primary">
    <input type="checkbox"> BMW Active E
  </label>
  </label>
    <label class="btn btn-primary">
    <input type="checkbox"> BMW 1er Cabrio
  </label>
  </label>
    <label class="btn btn-primary">
    <input type="checkbox"> BMW X1
  </label>
  <label class="btn btn-primary">
    <input type="checkbox"> MINI
  </label>
    </label>
    <label class="btn btn-primary">
    <input type="checkbox"> MINI Clubman
  </label>
   <label class="btn btn-primary">
    <input type="checkbox"> MINI Coupé
  </label>
    <label class="btn btn-primary">
    <input type="checkbox"> MINI Cabrio
  </label>
</div>
<br>
</head>
<body>
<font size="1"> 
<br>
<table class="table table-condensed" border="1" id="usertable"></table>
</font>
<script src="js/bootstrap.min.js"></script>
<div class="alert alert-success">
  <a href="#" class="alert-link">Die Übersicht zu Drive-Now München lädt... Bitte einen Moment Geduld!</a>
</div>
<script type="text/javascript">
$(document).ready(function(){
function callJSON() {
    setTimeout(function () {
        $.getJSON('./url.php', function(data) {
        	$ ("#usertable").empty();
            var cars = data.rec.vehicles.vehicles;
			//cars.sort(function(el1,el2){ return el1.model == el2.model ? 0 : (el1.model < el2.model ? -1 : 1); });
			cars.sort(function(el1, el2) {
    		if(el1.model== el2.model) {
       	 	if(el1.fuelState == el2.fuelState) {
            return 0;
        	} else if(el1.fuelState < el2.fuelState) {
            return -1;
        	} else {
            return 1;
       		}
    		} else if(el1.model < el2.model) {
        	return -1;
    		} else {
        	return 1;
    		}
			});
	           $.each(cars, function(key, data){
				var laenge=cars.length;
            	var vint=data.vin;
            	var positionA= new google.maps.LatLng(data.position.latitude, data.position.longitude);
            	var posiitonB= new google.maps.LatLng(48.1351253, 11.5819806);
            	var entfernung= google.maps.geometry.spherical.computeDistanceBetween (positionA, posiitonB);
            	var entfernung1=(entfernung/1000);
            	var entfernung2=entfernung1.toFixed(2);
            	var entfernung3=entfernung2+" Km";
            	console.log(entfernung2);
            	console.log(positionA);
            	console.log(posiitonB);
            	var coopers="";
            	var tanken="";
            	var drive="MAN";
            	var fuelfarbe="#01DF3A";
            	var prozent="%";
            	var kosten=" 31 Cent/Min "
            	var tanksymbol="glyphicon-tint";
            	var farbe="success";
            	var flugbadge="";
            	var mode="&dirflg=w";
            	var kraftstoff="BENZIN";
            	var ortbadge="glyphicon-map-marker";
            	var entfernungsbadge="glyphicon-resize-horizontal";
            	var krafts=" ("+data.fuelState+"%)";
            	var strasse=data.address;
            	var v=vint.substring(3,7);
            	var pdf=vint.substring(10,17);
            	var pdf1=pdf+".pdf";
            	console.log(pdf);
            	if(data.fuelType=="DDE"){kraftstoff="DIESEL";}
            	if(v=="SX31"){coopers=" S";}
            	if(v=="SW71"){coopers=" SD";}
            	if(data.model=="BMW ActiveE "){tanksymbol="glyphicon-flash"; kraftstoff="STROM";}
            	if(data.model=="BMW X1 "){kosten=" 34 Cent/Min ";}
            	if(data.auto=="Y"){drive="AUT";}
            	if((48.347910654607695 < data.position.latitude && data.position.latitude < 48.35988839686733)&&(11.781678199768066 < data.position.longitude && data.position.longitude < 11.792492866516113)){flugbadge="<span class='badge'>+12€</span>"; ortbadge="glyphicon-plane";}
            	if(data.fuelState<=25){tanken="20 Freiminuten für Vollbetankung"; farbe="warning";}
            	if(data.position.latitude=="0"){entfernung3="NaN"; strasse="Nicht lokalisierbar"; farbe="active";}
                $('#usertable').append(
                    function() {
                        return "<tr class="+farbe+">"+
                        			"<td>"+data.model+coopers+"</td>"+
                                    "<td><span class='glyphicon glyphicon-user'></span> "+data.carName+"</td>"+
                                    //"<td><span class='glyphicon glyphicon-time'></span> "+dur+"</td>"+
                                    "<td>"+drive+"</td>"+
                                    "<td><span class='glyphicon "+tanksymbol+"'></span>" +kraftstoff+krafts+"</td>"+
                                    "<td>"+data.licensePlate+"</td>"+
                                    "<td><span class='glyphicon "+ortbadge+"'></span> "+strasse+"</td>"+
                                    "<td><span class='glyphicon "+entfernungsbadge+"'></span> "+entfernung3+"</td>"+
                                    "<td><span class='glyphicon glyphicon-euro'></span>"+kosten+flugbadge+"</td>"+
                                    "<td>"+laenge+"</td>"+
                                    "<td><a href='https://de.drive-now.com/php/metropolis/vehicle_details?vin="+ data.vin +"'target='_blank'><button class='btn btn-success btn-xs' type='button'>Reservieren</button></a></td>"+
                                    "<td><a href='http://maps.google.de/maps?saddr="+ posiitonB +"&daddr="+data.address+mode+"'target='_blank'><button class='btn btn-danger btn-xs' type='button'>Route</button></a></td>"+
                                    "<td><a href='http://www.bmwarchiv.de/vin/"+pdf1+"'target='_blank'><button class='btn btn-danger btn-xs' type='button'>Route</button></a></td>"+
                                    
                                    //"<td><img src='"+data.model+"1.png'/></td>"+
                                "<tr>"; 
                    }
                );
            })
        }).always(callJSON);
	}, 2000);
	}
	$(callJSON);
	});
</script>
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-44913908-2', 'voltdrive.de');
  ga('send', 'pageview');

</script>
</body>
</html>

Vielen Dank für Eure Mühe!
 
Was genau heißt denn für dich filtern?
Sollen Sätze nach bestimmten Bedingungen nach Klick entfernt werden aus der Tabelle?
Und was genau fehlt dir an Infos? Wo hakt es?
 
Ich hätte gerne dass nur die Reihen der Tabelle angezeigt werden, die auf die Checkbox zutreffen. Leider fehlt mir da momentan noch generell der Ansatz.
 
OT: ich bin ja der Meinung, dass du mit dem Ansatz, dass du alle 2 Sekunden die komplette Tabelle neu aufbaust, auf lange Sicht nicht glücklich wirst... du hast doch die vin, was mir nach einer eindeutigen Indentifikationsnummer aussieht. Diese kannst du doch verwenden, um die erzeugten Zeilen zu aktualisieren. Dann hast du kein Problem mit dem Scrollen und könntest sogar Änderungen durch Animationen anzeigen. Das Ausblenden per Checkbox könntest du ja dann per CSS machen.
 
AW: Tabelle filtern

Hallo,
ich bin hier vollkommen hilflos in eurem Forum gelandet, ich habe noch nicht einmal herausgefunden, wie ich hier Beiträge verfassen kann... (obwohl ich die Hilfe "Neue Beiträge schreiben" gelesen habe).
(Das einzige, was ich geschafft habe, war mich anzumelden und hier antworten zu können.)

Also, es geht bei mir darum, ganz ähnlich wie bei dem Thema-Ersteller, dass bei einer Tabelle nur eine Auswahl angezeigt wird.
Die Tabelle hat Spalten; in der ersten Spalte (col_0) stehen Sprachen: deutsch, engl., franz., span.
Momentan ist es so, wenn die Seite geöffnet wird, werden alle Sprachen angezeigt. Über der Tabelle ist ein Feld, in dem man die Sprache auswählen kann. Wenn man dort "deutsch" wählt, werden auch nur deutsche Zeilen angezeigt. So weit alles in Ordnung!
Ich will aber, dass beim öffnen der Webseite erst mal nur deutsche Zeilen angezeigt werden, sozusagen als Voreistellung, und nur wenn man es auswählt, die anderen Sprachen oder alle Sprachen angezeigt werden.
Hier ist der vermutlich relevante Teil des Codes:
HTML:
...
<p align="center" class="lista-blanc">
  <script language="javascript" type="text/javascript">
//<![CDATA[
	var focoFilters = {
		btn: "none",
		col_0: "select",
        col_1: "none",
		col_2: "none",
		col_3: "select",
		col_5: "select",
		col_6: "select",
		col_7: "select",
		display_all_text: "Wähle...",
		btn_reset: true,
		btn_reset_text: "Alles anzeigen",
		rows_counter: true,
		rows_counter_text: "Beiträge: ",
		sort_select: true,
	}
	setFilterGrid("foco",1,focoFilters);
//]]></script> 
  <a href="http://forum.jswelt.de/de/index.html" target="_parent">zur Startseite </a>
</div>

</body>
Ich hoffe, dieser Teil des Codes reicht aus, damit ihr mir helfen könnt, ansonsten kann ich auch alles einstellen. Ich kenne mich nur sehr wenig mit dem Code aus. Oder vielleicht hilft euch auch die Adresse im Internet?: chronologiekritik lesesaal auf der Seite: www.chronologiekritik.net (Lesesaal)
Vielen Dank im Vorraus und bitte um Verständnis, falls ich mich hier eventuell schlecht ausgedrückt habe. Wenn es Fragen dazu gibt, beantworte ich sie gerne heute Abend oder morgen.
Grüße, Sascha
 
Zurück
Oben