leta efter en textsträng i en select box

JavaScript

3 svar · 271 visningar · startad av Mattias Nordin

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

Hej,

Jag undrar om det finns något fiffigt sätt att default markera en rad i en automatgenererad selectbox.
I denna så finns det 400 rader och jag vill att en viss rad som börjar på tex "Against..." ska vara markerad.
Finns det något smidigt sätt att åstakomma det?

Medlem sedan dec. 20025 483 inlägg
#2
function setsel(s)
{ var opts = document.forms[0].elements[0].options,
      i    = 0,
      elm  = null;
  while (elm = opts[i++])
    if (new RegExp("^" + s).test(elm.text)){ elm.selected = true; break; }
}

// användning: setsel("Against...")
Medlem sedan maj 200010 687 inlägg
#3

Ett tillägg så den inte flippar om man har med regexp nyckelord i strängen.

function setsel(s)
{
	s = s.replace(/(\W)/gi, "\\$1");
	var opts = document.forms[0].elements[0].options,
		i = 0,
		elm = null;
	while (elm = opts[i++])
		if (new RegExp("^" + s).test(elm.text)) { elm.selected = true; break; }
}
Medlem sedan dec. 20051 056 inlägg
#4

Ni är så bra på det här !

Det fungerar fantastiskt bra. Rätt rad blir automatiskt vald. Men man ser inte att den är vald utan att scrolla ner ganska långt. Kan man påverka scrolllisten så att den hoppar ner till rätt rad?

268 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
138 ms — ändringar (db)