Array durchsuchen ohne Reihenfolge

milea

Mitglied
Hallo!

Ich habe mir aus verschiedenen Scripts nen Suchscript für meine Webseite zusammengebastelt. Das klappt auch alles ganz gut - und macht mich fast komplett glücklich :)

Allerdings fehlt mir noch eine wichtige Funktion: Wenn ich in mein input-Feld einen Suchbegriff eingebe dann findet er immer nur die Einträge aus meinem Array ,wo dieser Begriff am Anfang steht.
Aber ich möchte auch das in meinem select-Feld ausgegeben bekommen, wo der Begriff z.B. erst an 3. Stelle steht.

Ich hab auch schon google und Co bemüht und herausgefunden, dass man sowas mit wohl einen RegExp macht. Allerdings hab ich als javascript- Änfängerin keine Ahnung wo und wie ich das in meinem Code einbaue.

Hier mal der Teil des Script, wo es ums vervollständigen geht
PHP:
<script language="JavaScript">
/* Autovervollständigen */

begriffe = new Array('Adresse für Formular',
'Formularbriefe',
'Preiseliste',
'Adressenliste',
'Adressformular');

function startAutoComplete(textfeld)
{ 
  if(!self.event || String.fromCharCode(event.keyCode).search(/[\w\-0-9\.\,]/) == -1){
    return; 
  }

  tempname = textfeld.value.toLowerCase();
  var results = new Array();
  
  for(i=0; i<begriffe.length; i++){ 
  if(begriffe[i].toLowerCase().indexOf(tempname) == 0 && tempname.length != begriffe[i].length){ 
	  results.push(begriffe[i]);
	} 
  } 

  deleteResults();
  addResults(results);
} 


function deleteResults()
{
  var y = document.search.matches.length;
    for(var x=0; x<y; x++){
    document.search.matches.options[0] = null;
   }
}


function addResults(res)
{
     for(var x=0; x<res.length; x++){
    result = new Option(res[x],res[x],false,false);
    document.search.matches.options[document.search.matches.options.length] = result;
}


}

Hier mein Formular:
HTML:
<form name="search" onSubmit="return findeSeite(this.string.value);">
<input name="string" type="text" size=20 value="Bitte Suchbegriff eingeben" onKeyUp="startAutoComplete(this);" onChange="n = 0;" onfocus="if(this.value=='Bitte Suchbegriff eingeben')this.value='' " >
<br>
 <select size="1" style="width:215px" "  name="matches" id="matches" onchange="document.search.string.value=this.value"><option selected="selected" >---Auswahlmöglichkeiten---</option></select>
<input type="submit" value="SUCHEN">

Wie kann ich nun erreichen, dass in meinem Select-feld wenn ich zB. nach "Formular" suche, 'Adresse für Formular', 'Formularbriefe' und 'Adressformular zur Auswahl stehen?

Vielen Dank schonmal für eure Hilfe!
 
Hi,

versuch mal diese Zeile
Code:
if(begriffe[i].toLowerCase().indexOf(tempname) == 0 && tempname.length != begriffe[i].length){
durch folgende zu ersetzen
Code:
if(begriffe[i].toLowerCase().search(new RegExp(tempname)) != -1){

Es wird nun mit einem regulären Ausdruck nach dem eingegebenen String gesucht.

Weiterhin hast du im ersten regulären Ausdruck einige Fehler. Korrekt soll es sicherlich so lauten:
Code:
if(!self.event || String.fromCharCode(event.keyCode).search(/[\w\-0-9\.,]/) == -1){

Ciao
Quaese
 

Neue Beiträge

Zurück