webForumDet fria alternativet
Logga in / Bli medlem

"Titel" och värde i en combobox

JavaScript

18 svar · 321 visningar · startad av Kim

Medlem sedan jan. 20007 697 inlägg
Trådstart#1

Jag har en databastabell med ett antal olika avdelningar på en sida. Alla dessa avdelningar har ett id som används för att dirigera besökaren rätt, det finns alltså ett id och ett namn. Nu ska jag ha dessa i ett länkverktyg. Därför kommer det se ut ungefär så här:

<select name="selectbox">
<option value="1">Startsida
<option value="2">Bandyklubben
<option value="3">Fotbollsklubben
<option value="4">Handbollsklubben
</select>

Om jag nu ska hämta ta dessa värden med javascript så får jag ju bara fram värdet, d.v.s. id-numret (1,2,3...osv), men hur gör jag om jag skulle vilja ha även namnet, så att Startsida, Bandyklubben, Fotbollsklubben och Handbollsklubben också kommer med? Går det att göra överhuvudtaget?

Medlem sedan juni 20004 308 inlägg
#2

Om vi tänker oss att obj är objekt-referensen för select-listan (document.formulärsnamn.selectbox) så hittar du värdena med obj[indexnummer].value och texten med obj[indexnummer].text

Medlem sedan jan. 20007 697 inlägg
#3

Tack så mycket! :D

En liten följdfråga, eftersom detta rör sig lite om sidor och undersidor, så ligger det - och   framför den text som tas fram med obj[indexnummer].text. Hur får man bort såna tecken med javascript?

Medlem sedan jan. 20007 697 inlägg
#4

Tackar! :D

Medlem sedan juni 20004 308 inlägg
#5

Exempel;

obj[0].text.replace(/(^\-)&#0124;(^\&nbsp\;)/,"");

- returnerar texten från selectlistans index 0 och plockar bort - och   i början. Sen är det bara att loopa.

Medlem sedan jan. 20007 697 inlägg
#6

Hur kan jag läsa ditt inlägg, skriva ett svar och sen få det att hamna före ditt? ;)

Jaja, det fungerar inte riktigt. Det är så att jag i comboboxen behöver alla streck och mellanslag, men när jag sen ska skriva ut det så vill ja inte ha dem. Jag har alltså en strängvariabel innehållandes t.ex. - Nyheter, hur gör jag för att ta bort strecket och det inledande mellanslaget?

--- Red ---
Ursäkta för intrånget i ditt inlägg. Jag råkade klicka på fel knapp :/

[Redigerat av Jojoxx den 17 jan 2002]

Medlem sedan juni 20004 308 inlägg
#7

Hur kan jag läsa ditt inlägg, skriva ett svar och sen få det att hamna före ditt? ;)

För att man som moderator har möjligheten att radera ett inlägg och skriva ett nytt istället för att redigera. Ser lite snyggare ut när man skriver fel :)

Jaja, det fungerar inte riktigt. Det är så att jag i comboboxen behöver alla streck och mellanslag, men när jag sen ska skriva ut det så vill ja inte ha dem.

Exemplet ovan returnerar bara ett värde, det ändrar inte på orginalet. Det är lite med finessen. Skulle du (tvärtom) vilja ändra på orginalet får du göra det med en tilldelning;

obj[0].text=obj[0].text.replace...osv.

Jag har alltså en strängvariabel innehållandes t.ex. - Nyheter, hur gör jag för att ta bort strecket och det inledande mellanslaget?

Observera att   och " " (mellanslag) inte är samma sak. För att ta bort "- " från början av en sträng kan du använda;

string=string.replace(/^\-\s/,"");

För att ta bort "- " i början;

string=string.replace(/^\-\&nbsp\;/,"");

Medlem sedan jan. 20007 697 inlägg
#8

Problemet är att det inte alltid är ett bindestreck och inte alltid lika många  , ibland är det nämligen fyra stycken   och ibland åtta.
Du har inget färdigt exempel som fixar detta?

Tack förresten för att du orkar med mina problem.

Medlem sedan juni 20004 308 inlägg
#9

This should do the trick.

string=string.replace(/(^\-((\&nbsp\;)*))&#0124;(^(\&nbsp\;)+)/,"");
Medlem sedan jan. 20007 697 inlägg
#10

Nope, it didn't do the trick.

Den plockar bort bindestreck, men inte några   alls. :(

Medlem sedan juni 20004 308 inlägg
#11

Yes, it does too ;)

// Test 1
string="-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;En sträng";
string=string.replace(/(^\-((\&nbsp\;)*))&#0124;(^(\&nbsp\;)+)/,"");
alert(string);

// Test 2
string="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;En sträng";
string=string.replace(/(^\-((\&nbsp\;)*))&#0124;(^(\&nbsp\;)+)/,"");
alert(string);

Klistra in och testa. Det är inte så att du blandar ihop   och " "?

Medlem sedan jan. 20007 697 inlägg
#12

No, it doesn't. ;)

Så här ser select-koden ut.

<select name="internLink" size="1" onFocus="document.insertLink.link[1].checked = true">
<option value=0>Huvudnivå
<option value=2>NYHETSARKIV
<option value=997>    Provar igen
<option value=981>    Testnyhet
<option value=1011>    Testnyhet
<option value=1012>    Urban testar
<option value=998>    medlemsnyhet
<option value=987>    Test2
<option value=980>Provar modulen
<option value=985>”Vi har en hel del lite udda jobb”
<option value=971>Kontakt
<option value=969>MEDLEMMAR
<option value=983>Målet är att bli certifierad projektledare
<option value=982>Nu är även RM kvalitetssäkrat
<option value=984>Nyföretagarlånet gjorde förvärvet möjligt
<option value=201>Sök
</select>

Testa gärna med den så ska du få se att det inte alls fungerar. ;)

/R: De mellanslag du ser precis efter option-taggen är alltså  
Det fungerar inte...

[Redigerat av Kim den 18 jan 2002]

Medlem sedan juni 20004 308 inlägg
#13

Fungerar det om du använder;

string.replace(/(^\-((\s)*))|(^(\s)+)/,"");

Medlem sedan jan. 20007 697 inlägg
#14

Nej du, det gör inte det. Men tack ändå, du behöver inte lägga ner mer tid på det här, du har hjälpt mig tillräckligt ändå. :D

Tack så mycket, det får vara så här över helgen i alla fall. :)

Medlem sedan juni 20004 308 inlägg
#15

Jag är fortfarande inte riktigt överens med regexpet, men det duger;

string=string.replace(/(&nbsp;)&#0124;(^\-)/g,"");
Medlem sedan jan. 20007 697 inlägg
#16

Jag är ledsen att behöva säga det här, men det fungerar fortfarande inte. ;)

Medlem sedan juni 20004 308 inlägg
#17

Spännande. Det verkar som detta skiljer mellan olika webbläsare. Vi gör en ny approach;

string=string.match(/(\w.+)/); string=RegExp.$1;

Medlem sedan jan. 20007 697 inlägg
#18

Näe, det alla som du har skrivit (utom det sista) klarar av att ta bort bindestreck, men inte   .

Jag fattar inte. :OO

Medlem sedan juni 20004 308 inlägg
#19

Iofs ser jag att jag tilldelningen string=string.match är onödig utan det räcker med att köra regexpet, men det spelar ingen roll. Ovanstående har jag testat i Netscape 4.07, Mozilla, IE5.01 och IE5.5 och det fungerar. Jag har även lagt upp ett test här. Markera ett val i listan och klicka på knappen. Hakparenteserna är bara med i alert-rutan för att du skall se e.v. mellanslag. Testa gärna och titta i källkoden så ser du att - och   används. Vad testar du med för webbläsare?

438 ms totalt · 4 externa anrop · v20260731065814-full.50d4b5bd
175 ms — deklarationer (db)
117 ms — hämta statistik (db)
142 ms — hämta tråd, inlägg och bilagor (db)
176 ms — ändringar (db)