webForumDet fria alternativet

Filtrera innehållet i en select box

1 svar · 356 visningar · startad av Mattias Nordin

Mattias NordinMedlem sedan dec. 20051 056 inlägg
#1

Hej,

Jag har en multiple select box som innehåller en massa rader. Undrar om det är någon som känner till något script som filterar innehållet i select boxen dynamiskt.

Tex om jag skriver in "att" i ett input fält så ersätts innehållet i selectboxen och enbart alla rader som innehåller "att" visas. Detta skulle vara guld att ha men jag vet inte riktigt var jag ska börja.

:stud

Mattias NordinMedlem sedan dec. 20051 056 inlägg
#2

Efter att ha testat ett par timmar så har jag kommit fram till att följande fungerar ganska bra.

<form name="myform1">
<input type="text" onKeyUp="funReplaceContent(this.value)"><p>

Master<br>
<select name="master" MULTIPLE SIZE="10">
<option value="Blue">Blue</option>
<option value="News">News</option>
<option value="Webmaster">Webmaster</option>
<option value="Tech">Tech</option>
<option value="Tech2">Tech2</option>
<option value="Tech3">Tech3</option>
</select>
</form>

<!-- TEMP FORMULÄRET -->
<form name="hiddenForm" style="visibility:hidden;"><select name="temp" size="0"> </select></form>

<script language="JavaScript">
  //////////////////////////////////////////////////////////////////////////////////////////////////////
 //   SKAPAT AV MATTIAS NORDIN. KÄLLA: [url]http://www.javascriptkit.com/javatutors/selectcontent.shtml[/url]   //
//////////////////////////////////////////////////////////////////////////////////////////////////////

//KOPIERA INNEHÅLLET TILL TEMP...
funCopySelectBoxContent();

//FILTER FUNKTIONEN...
function funReplaceContent(varKeepThisString){
	var frmMaster = document.myform1.master
	var frmHidden = document.hiddenForm.temp

	//SÄTT INKOMMANDE TILL VERSALER...
	varKeepThisString = varKeepThisString.toLowerCase();

	//TÖM MASTER LISTAN...
	frmMaster.options.length=0
	
	//HUR MÅNGA OPTION VALUES FINNS NU I HIDDEN...
	varNumberOfSelectBoxOptions = frmHidden.options.length

	//LOOPA IGENOM ALLA OPTIONS...
	for (i=0; i < varNumberOfSelectBoxOptions; i++){
		
		//HÄMTA OPTION VALUE RAD FÖR RAD...
		varOptionValue = frmHidden.options[i].value.toLowerCase();
		
		//TESTA OM SÖKNING TRÄFFAR...
		if (varOptionValue.indexOf(varKeepThisString) == -1){
		//...
		} else {
			frmMaster.options[frmMaster.options.length] = new Option(varOptionValue, varOptionValue, false, false)
		}
	}
}
//FUNCTION FÖR ATT KOPIERA TILL HIDDEN TEMP...
function funCopySelectBoxContent(){
	var frmMaster = document.myform1.master
	var frmHidden = document.hiddenForm.temp
	varNumberOfSelectBoxOptions = frmMaster.options.length
	for (i=0; i < varNumberOfSelectBoxOptions; i++){
		varOptionValue = frmMaster.options[i].value;
		frmHidden.options[frmHidden.options.length] = new Option(varOptionValue, varOptionValue, false, false)
	}
}
</script>

:bire

363 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
359 ms — hämta tråd, inlägg och bilagor (db)