Einen gangbaren Weg hattest du dir doch im vorherigen Posting selber schon überlegt - also warum verfolgst du diesen nicht weiter?
[JavaScript] options ausblenden
Einklappen
X
-
hmm, naja, ich muss sagen javascript ist nicht so ganz mein ding... wie baue ich denn ein mehrspaltiges array auf und lese die werte ein? naja, das bekomme ich schon irgendwie hin, aber über den ganzen seitenaufruf hinweg muss das array ja gespeichert werden, gibt es sowas wie eine global variable die immer da ist in javascript?!?
Kommentar
-
Hallo, hab das jetzt so gemacht, mit zwei hidden feldern für das Array. Nur leider löscht er schonmal nicht alle options raus, und öfters steht auch ein eintrag 2mal drin, und bei der suche kommen einträge raus die den suchstring garnicht enthalten... sonst funzt es aber! Sieht einer den fehler?!?
PHP-Code:<script type="text/javascript">
function addresssearch(searchValue) {
var optionen= new Array();
var werte= new Array();
var str1 = document.shoppingCartDetailsForm.werte.value;
//die beiden hidden felder
var str2 = document.shoppingCartDetailsForm.optionen.value;
if(str1 == "")
{
//Beim ersten Aufruf (felder leer) alle options in die hidden felder
for(i=0; i< document.shoppingCartDetailsForm.grAddressNo.options.length; i++) {
werte[i]=document.shoppingCartDetailsForm.grAddressNo.options[i].value;
optionen[i]=document.shoppingCartDetailsForm.grAddressNo.options[i].text;
}
document.shoppingCartDetailsForm.werte.value=werte.join('#');
document.shoppingCartDetailsForm.optionen.value=optionen.join('#');
}
else
{
//wen nwas in den feldern ist diese ins array
werte = document.shoppingCartDetailsForm.werte.value.split("#");
optionen = document.shoppingCartDetailsForm.optionen.value.split("#");
}
for(i=0; i< document.shoppingCartDetailsForm.grAddressNo.options.length; i++) {
document.shoppingCartDetailsForm.grAddressNo.options[i]=null;
//Alle options löschen
}
for(i=0; i< werte.length; i++) {
//Neue options erstellen auf basis des arrays
if(searchValue.length == 0 || optionen[i].toLowerCase()
.indexOf(searchValue.toLowerCase()) >= 0){
NeuerEintrag = new Option(optionen[i],werte[i], false, false);
document.shoppingCartDetailsForm.grAddressNo.options
[document.shoppingCartDetailsForm.grAddressNo.length] = NeuerEintrag;
}
}
}
</script>
Zuletzt geändert von Simon6785; 16.11.2005, 10:20.
Kommentar
-
so, ich habs hinbekommen, Funktioniert einwandfrei, danke für eure Hilfe. Eine Frage noch, gibt es eine Möglichkeit das ich ohne die Hidden Felder auskomme, bzw Sieht noch jemand eine Möglichkeit Performance zu sparen? Gruß Simon
PHP-Code:<script type="text/javascript">
function addresssearch(searchValue) {
//Arrays deklarieren
var optionen= new Array();
var werte= new Array();
if(document.shoppingCartDetailsForm.werte.value == "")
{
//Wenn noch keine Werte im hidden Feld sind (erster Aufruf
//der Function), Arrays und Felder aus den HTML Options füllen
for(i=0; i< document.shoppingCartDetailsForm.grAddressNo.options.length; i++)
{
werte[i]=document.shoppingCartDetailsForm.grAddressNo.options[i].value;
optionen[i]=document.shoppingCartDetailsForm.grAddressNo.options[i].text;
}
document.shoppingCartDetailsForm.werte.value=werte.join('#');
document.shoppingCartDetailsForm.optionen.value=optionen.join('#');
}
else
{
//Wenn Werte in den Feldern sind, diese Werte in die Arrays schreiben
werte = document.shoppingCartDetailsForm.werte.value.split("#");
optionen = document.shoppingCartDetailsForm.optionen.value.split("#");
}
//AB HIER ARRAYS WERTE UND OPTIONEN GEFÜLLT MIT DEN ORIGINAL ADRESSEN!
//ALLE Options im Select Feld löschen
for(i=0; i< werte.length; i++)
{
document.shoppingCartDetailsForm.grAddressNo.options[0]=null;
}
for(i=0; i< werte.length; i++)
{
if(optionen[i].toLowerCase().indexOf(searchValue.toLowerCase()) >= 0)
//Array durchsuchen nach search Value
{
NeuerEintrag = new Option(optionen[i],werte[i], false, false);
//Wenn gefunden wurde diese Option neu erstellen
document.shoppingCartDetailsForm.grAddressNo.
options[document.shoppingCartDetailsForm.grAddressNo.length] = NeuerEintrag;
}
}
}
</script>
Kommentar
Kommentar