webForumDet fria alternativet
Logga in / Bli medlem

Jojoxs Auto select

JavaScript

7 svar · 301 visningar · startad av Jacob

Medlem sedan dec. 2000503 inlägg
Trådstart#1

Jag har försökt modifiera jojoxx auto select script, det fungerar tyvärr inte riktigt.

<script language="javascript" type="text/javascript">
var ignorevw=false; // Skall V eller W ignoreras? 
var lista = new Array(); 
function searchlist(value,listobj){ 
	if(lista.length == 0) buildlist(listobj); 
	value = value.split(' ');
	matches=0; 
	listobj.length = lista.length; 
	for(i=0;i<value.length;i++){
		for(n=0;n<lista.length;n++){ 
			namn = lista[n].text.split(' ');
			for(p=0;p<namn.length;p++){
				if(namn[p].substring(0,value[i].length).toLowerCase()==value[i].toLowerCase()||ignorevw&&namn[p].substring(0,value[i].length).replace(/w/g,'v').toLowerCase()==value[i].replace(/w/g,'v').toLowerCase()){ 
					listobj[matches].text = lista[n].text; 
					listobj[matches].value = lista[n].value; 
					matches++; 
				}
			} 
		} 
	}
	listobj.length = matches; 
	listobj.selectedIndex=0; 
} 
function buildlist(obj){ 
	for(n=0;n<obj.length;n++){ 
		lista[n] = new makeobj(obj[n].value,obj[n].text); 
	} 
} 
function makeobj(value,text){ 
	this.value=value; this.text=text; 
} 
</script>
<form>
<table border="0">
<tr>
<td>
<input type="text" name="search" onKeyUp="searchlist(this.value,this.form.lista);" onKeyPress="searchlist(this.value,this.form.lista);" style="width: 150px;"><br> 
<select name="lista" size="4" onChange="this.form.search.value=this[this.selectedIndex].value" style="width: 150px;"> 
	<option value="1">Lindehoff Jacob</option>
	<option value="2">Nilsson Adam</option>
	<option value="3">Karlsson Ulf</option>
	<option value="4">Östern Nisse</option>
</select>
</td>
</tr>
</table>
</form>

Det jag vill åstakomma är att man ska kunna skriva förnamnet eller efternamnet första. Med det vnliga skriptet så måste man skriva exakt i den ordningen som dom står.

Mitt skript fungerar nästa men det är lite struligt testa så får ni se.

Medlem sedan juni 20004 308 inlägg
#2

Try this:

<script type="text/javascript"> 
var ignorevw=false; // Skall V eller W ignoreras? 
var ignorecase=true; // Ignorera gemener / VERSALER ? 
var lista = new Array(); 
function searchlist(value,listobj){ 
   if(lista.length == 0) buildlist(listobj); 
   matches=0; 
   value=(ignorevw)?value.replace(/w/g,'v'):value;
   value=(ignorecase)?value.toLowerCase():value;
   listobj.length = lista.length; 
   for(n=0;n<lista.length;n++){ 
      var teststr=" "+lista[n].text; teststr=(ignorevw)?teststr.replace(/w/g,'v'):teststr; teststr=(ignorecase)?teststr.toLowerCase():teststr;
      var reverseorder=" "+teststr.split(" ")[2]+" "+teststr.split(" ")[1];
      if(teststr.indexOf(" "+value)>-1||reverseorder.indexOf(' '+value)>-1){
         listobj[matches].text = lista[n].text; 
         listobj[matches].value = lista[n].value; 
         matches++; 
      }
   } 
   listobj.length = matches; 
   listobj.selectedIndex=0; 
} 
function buildlist(obj){ 
   for(n=0;n<obj.length;n++){ 
      lista[n] = new makeobj(obj[n].value,obj[n].text); 
   } 
} 
function makeobj(value,text){ 
   this.value=value; this.text=text; 
} 
</script> 

<form> 
<input type="text" name="search" onKeyUp="searchlist(this.value,this.form.lista);" onKeyPress="searchlist(this.value,this.form.lista);" style="width: 150px;"><br> 
<select name="lista" size="4" onChange="this.form.search.value=this[this.selectedIndex].text;" style="width: 150px;"> 
	<option value="1">Lindehoff Jacob</option>
	<option value="2">Nilsson Adam</option>
	<option value="3">Karlsson Ulf</option>
	<option value="4">Östern Nisse</option>
</select> 
</form>
Medlem sedan dec. 2000503 inlägg
#3

Den fungerar nästan som jag vill, problemet är att när men trycker mellansla och ska skriva efternamner eller tvärtom så försvinner resultatet. kan man lösa det oxå

Medlem sedan juni 20004 308 inlägg
#4

Liten quick'n'dirty-ändring. Prova igen.

Medlem sedan dec. 2000503 inlägg
#5

Tackar nu fungerar det

Medlem sedan dec. 2000503 inlägg
#6

Kan man få scriptet att fungera med denna select oxå:

<select name="lista" size="4" onClick="this.form.uID.value=this[this.selectedIndex].value; this.form.search.value=this[this.selectedIndex].text" onChange="this.form.uID.value=this[this.selectedIndex].value; this.form.search.value=this[this.selectedIndex].text" style="width: 230px;"> 
<option value="3">Karlsson Ulf, Cob Media</option>
<option value="1">Lindehoff Jacob, Cob Media</option>
<option value="2">Nilsson Adam, Cob Media</option>
<option value="4">Östern Nisse, Cob Media</option>
<option value="9">då g, Net-On</option>
<option value="7">Linden Jake, Net-On</option>
<option value="8">Nordin Jake, Net-On</option>
</select>
Medlem sedan dec. 2000503 inlägg
#7

Går det inte att fixa om det är mer än två ord eller?

Medlem sedan juni 20004 308 inlägg
#8
<script type="text/javascript"> 
var ignorevw=false; // Skall V eller W ignoreras? 
var ignorecase=true; // Ignorera gemener / VERSALER ? 
var lista = new Array(); 
function searchlist(value,listobj){ 
   if(lista.length == 0) buildlist(listobj); 
   matches=0; 
   value=(ignorevw)?value.replace(/w/g,'v'):value;
   value=(ignorecase)?value.toLowerCase():value;
   listobj.length = lista.length; 
   for(n=0;n<lista.length;n++){ 
      var teststr=lista[n].text; teststr=(ignorevw)?teststr.replace(/w/g,'v'):teststr; teststr=(ignorecase)?teststr.toLowerCase():teststr; teststr=teststr.replace(/,/g,'');
      var testarray=teststr.split(" "); valuearray=value.split(" "); var amatches=0;
      for(var an=0;an<testarray.length;an++){
         for(var ann=0;ann<valuearray.length;ann++){
            if((" "+testarray[an]).match(new RegExp(" "+valuearray[ann]))){ amatches++; valuearray[ann]=false; }
         }
      }
      if(amatches==valuearray.length){
         listobj[matches].text = lista[n].text; 
         listobj[matches].value = lista[n].value; 
         matches++; 
      }
   } 
   listobj.length = matches; 
   listobj.selectedIndex=0; 
} 
function buildlist(obj){ 
   for(n=0;n<obj.length;n++){ 
      lista[n] = new makeobj(obj[n].value,obj[n].text); 
   } 
} 
function makeobj(value,text){ 
   this.value=value; this.text=text; 
} 
</script> 

<form> 
<input type="text" name="search" onKeyUp="searchlist(this.value,this.form.lista);" onKeyPress="searchlist(this.value,this.form.lista);" style="width: 150px;"><br> 
<select name="lista" size="4" onChange="this.form.search.value=this[this.selectedIndex].text;" style="width: 150px;"> 
<option value="3">Karlsson Ulf, Cob Media</option>
<option value="1">Lindehoff Jacob, Cob Media</option>
<option value="2">Nilsson Adam, Cob Media</option>
<option value="4">Östern Nisse, Cob Media</option>
<option value="9">då g, Net-On</option>
<option value="7">Linden Jake, Net-On</option>
<option value="8">Nordin Jake, Net-On</option>
</select> 
</form>
262 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)