Avatar billede net-base.dk Nybegynder
09. januar 2007 - 09:59 Der er 17 kommentarer og
1 løsning

onChange advarsel

Hej

Jeg har en HTML form med en dropdown i.

Jeg har brug for at få vist en alert når man ændre værdien. Den box der skal komme frem skal spørge en om man er sikker på at man vil skifte værdien og trykker man JA skal den ændre værdien til det man har valgt og siger man NEJ skal den sætte værdien tilbage til hvad den var...
Avatar billede crazysnap Seniormester
09. januar 2007 - 10:43 #1
Hej net-base.dk,

Har lavet et lille eksempel til dig som har den ønskede funktionalitet! :)



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>
<META HTTP-EQUIV="Expires" CONTENT="Fri, Jun 12 1981 08:20:00 GMT">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-store">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="content-type" content="text/html;charset=iso-8859-1">
<META HTTP-EQUIV="imagetoolbar" content="no">
<META HTTP-EQUIV="Content-language" content="dan">
<META NAME="robots" content="all">
<title>Dropdownlist example</title>


<script type="text/javascript">

var SelectedIndex = 0;

function OnChange(dropdown)
{
    var index  = dropdown.selectedIndex;
    var selectedValue = dropdown.options[index].value; //url
    var selectedName = dropdown.options[index].text;
   
    var value = confirm("Er du sikker på du vil ændre værdien til: " + selectedName);

    if(value)
        SelectedIndex = index;
    else
        dropdown.selectedIndex = SelectedIndex;
   
    return value;
}

</script>

</head>

<body>

<form>

<div id="div1">

<select name="dd1"  onchange="OnChange(this);">
<option value="url">Value 1</option>
<option value="url">Value 2</option>
<option value="url">Value 3</option>
<option value="url">Value 4</option>
<option value="url">Value 5</option>
<option value="url">Value 6</option>
</select>

</div>

</form>

</body>
</html>


Håber det var det du tænkte på og kan bruge det! :)


- Snap
Avatar billede net-base.dk Nybegynder
09. januar 2007 - 10:59 #2
JA det ser ud til at virke. Men kan man ikke få den til at sætte "var SelectedIndex" til det som er valgt i dropdown menuen?

OG kunne jeg få dig til at forklare hvad koden gør, har ikke den mindste smugle forstand på Javascript...
Avatar billede olebole Juniormester
09. januar 2007 - 11:13 #3
<ole>

<script type="text/javascript">
function myChange(oSel) {
    var selectedName = oSel.options[oSel.selectedIndex].text,
    bVal = confirm("Er du sikker på du vil ændre værdien til: " + selectedName);
    if (!bVal) oSel.selectedIndex = oSel.getAttribute("indexCache") * 1;
}
</script>

<select onchange="myChange(this);" onmousedown="this.setAttribute('indexCache',this.selectedIndex)">
    <option value="url">Value 1</option>
    <option value="url">Value 2</option>
    <option value="url">Value 3</option>
    <option value="url">Value 4</option>
    <option value="url">Value 5</option>
    <option value="url">Value 6</option>
</select>

/mvh
</bole>
Avatar billede net-base.dk Nybegynder
09. januar 2007 - 12:07 #4
Ole Hvis jeg trykker "Cancel" til at skifte værdine skifter den den alligevel
Avatar billede olebole Juniormester
09. januar 2007 - 12:48 #5
Prøv at vise koden, så vi kan finde fejlen  =)
Avatar billede olebole Juniormester
09. januar 2007 - 12:50 #6
PS: Der er ikke FF på den maskine, jeg sidder på i øjeblikket, så jeg har kun testet i IE. Når man ved, hvor fucked FF's DOM-lag er, kan man dog aldrig vide, om noget somhelst virker, som forventet - med mindre, man tester i FF  :oP
Avatar billede net-base.dk Nybegynder
09. januar 2007 - 12:50 #7
<html>
<head>
<script type="text/javascript">
function myChange(oSel) {
    var selectedName = oSel.options[oSel.selectedIndex].text,
    bVal = confirm("Er du sikker på du vil ændre værdien til: " + selectedName);
    if (!bVal) oSel.selectedIndex = oSel.getAttribute("indexCache") * 1;
}
</script>

</head>
<body>

<select onchange="myChange(this);" onmousedown="this.setAttribute('indexCache',this.selectedIndex)">
    <option value="url">Value 1</option>
    <option value="url">Value 2</option>
    <option value="url">Value 3</option>

    <option value="url">Value 4</option>
    <option value="url">Value 5</option>
    <option value="url">Value 6</option>
</select>

</body>
</html>

Det er din kode bare med lidt ekstra html tegn...
Avatar billede net-base.dk Nybegynder
09. januar 2007 - 12:54 #8
Det er en firefox jeg sidder og tester på, er Firefox dårligere end IE? syntes altid man har hørt at IE er bedere...
Avatar billede net-base.dk Nybegynder
09. januar 2007 - 12:56 #9
hehe det virker i IE bare ikke firefox, men ville nu gerne have det til at virke i Firefox også... da firefox jo er på vej frem.
Avatar billede crazysnap Seniormester
09. januar 2007 - 12:57 #10
Så er jeg tilbage, og du kan vist godt afvise mit svar nu med alt den hjælp du har fået af olebole! :)

- Snap
Avatar billede olebole Juniormester
09. januar 2007 - 12:59 #11
net-base.dk >> Man hører så meget - og en stor del af det er rent vrøvl  =)
IE og FF er nogenlunde lige dårlige - men deres dårligdomme ligger på forskellige områder.

Da jeg ikke har en FF på denne maskine, kan jeg ikke undersøge, hvor FF fejler, men scriptet burde ikke fejle noget (hvilket selvfølgelig ikke er nogen trøst, hvis FF ikke formår at bruge det)  =)
Avatar billede net-base.dk Nybegynder
09. januar 2007 - 13:01 #12
Nej Det er jo det, prøver lige at smide FF2 på i stedet FF1.5 Kan være det løser problemet...

Er der et sted på nettet for man kan læse om deres svage sider?
Avatar billede olebole Juniormester
09. januar 2007 - 13:12 #13
Ikke rigtig. Symantec har skrevet en del om dens sikkerhedshuller, men derudover synes tvangstanker om en perfekt browser at blænde folk, så de ikke kan se alle dens fejl. Man bliver i hvertfald ofte 'overfaldet', når man påpeger dens svagheder  =)
Avatar billede net-base.dk Nybegynder
09. januar 2007 - 13:18 #14
hehe, ja det kunne du godt bilde mig ind at man gør...

FF2 kan heller ikke finde ud af at bruge den lille Javascript kode... Kan man skrive den på en måde så FF også kan læse den og forstå den?

Det jeg skal bruge koden til er at informere folk om at hvis de ændre den så opstår der fejl et andet sted i systemet.

Ole jeg har et lille spørgsmål omkring noget html som vises på en meget mærkelig måde i IE men fint i FF har du tid til at kigge på koden? hvis jeg opretter et nyt spg?
Avatar billede crazysnap Seniormester
09. januar 2007 - 13:20 #15
Nå, men så kan jeg jo supplere med fixen så det også virker i FF.
FireFox måde at håndtere events'ne er lidt anderledes end hos IE, så du bliver nødt til at bruge onclick i stedet onmousedown for firefox registrerer onmousedown to gang når man vælger en options fra drop down listen (IE registrerer kun en). Og det er derfor det ikke virker i FF.

så hvis du erstatter:

<select onchange="myChange(this);" onmousedown="this.setAttribute('indexCache',this.selectedIndex)">

med:

<select name="dd1"  onchange="OnChange(this);" onclick="this.setAttribute('indexCache',this.selectedIndex);">


Burde det virke i begge browsere! :)


- Snap
Avatar billede net-base.dk Nybegynder
09. januar 2007 - 13:24 #16
crazysnap -> Ja det gjore tricket. nu virker koden både i FF2 og IE6.

Ols hvis du har tid til at kigge på den anden kode så ville det være cool sig til så opretter jeg et spg
Avatar billede olebole Juniormester
09. januar 2007 - 13:29 #17
Hehe ... ja, det er jo et fint eksempel på, begge browsere er noget crap. onclick burde ikke virke til dette ... i nogen browser  =)

Jeg er ikke sikker på, hvad det er for en anden kode, du taler om  :)
Avatar billede net-base.dk Nybegynder
09. januar 2007 - 13:34 #18
Ole smid et svar her så deler jeg point da i var fælles om at komme med den løsning jeg skulle bruge :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester