Avatar billede kgp43 Nybegynder
30. juni 2005 - 21:52 Der er 8 kommentarer og
1 løsning

Dropdown auto redirect confirm

Hejsa,

Jeg har følgende dropdown menu har automatisk redirecter brugeren til en side (uden klik på submit).
Hvordan får jeg "påsat" onlick confirm? Ex:


<select name="NavSelect" onChange="if(this.selectedIndex>0)location.href = this.options[this.selectedIndex].value" id="dropdown">
  <option value="">Actions</option>
  <option value="index.php" onclick="return confirm('Sure?');">Profile </option>
  <option value="index.php">History</option>
</select>
Avatar billede kgp43 Nybegynder
30. juni 2005 - 21:53 #1
skulle selvfølgelig være "onclick" i stedet for "onlick" :P
Avatar billede softspot Forsker
01. juli 2005 - 00:12 #2
Du skal vel snarere lægge kode til confirm ind i onchange på select-tag'et i stedet for at lægge den på option-tag'et. Noget i stil med:

<select name="NavSelect" onChange="if(this.selectedIndex>0) if(Confirm('Sure?'))location.href = this.options[this.selectedIndex].value" id="dropdown">
  <option value="">Actions</option>
  <option value="index.php">Profile </option>
  <option value="index.php">History</option>
</select>
Avatar billede softspot Forsker
01. juli 2005 - 00:13 #3
...hmmm - og så skal confirm nok stadig være med lille begyndelsesbogstav (selvom du nok selv havde gennemskuet dette) :)
Avatar billede kgp43 Nybegynder
01. juli 2005 - 02:38 #4
Betyder det så ikke at confirm kommer ved alle options? er det muligt kun at få det ved et defineret antal?
Avatar billede roenving Novice
01. juli 2005 - 10:30 #5
-- så skal du lægge det ud som funktion, for skrevet inline er det voldsomt uoverskueligt !-)

-- iøvrigt kan man bare sammenskrive de to betingelser, da javascript bruger 'short evaluation':

<select name="NavSelect" onChange="if(this.selectedIndex>0 && confirm('Sure?'))location.href = this.value" id="dropdown">
Avatar billede softspot Forsker
01. juli 2005 - 10:35 #6
...og "short evaluation" betyder altså at hvis det første udtryk bevirker at hele udtrykket evaluerer til false så stopper evalueringen :)

Som roenving (endnu engang hurtigere end mig ;)) pointerer, så kan du f.eks. checke på indeks inden du smider en confirm-dialog op. Hvis dette ikke er godt nok, så skal der laves en mere snedig protokol for hvordan du kan identificere de options for hvilke der skal vises bekræftigelse...
Avatar billede kgp43 Nybegynder
01. juli 2005 - 11:01 #7
Dette her virker fint :)
Lig et svar så er der point.

Takker for hjælpen.
Avatar billede softspot Forsker
01. juli 2005 - 11:13 #8
Det var så lidt (for min  del) :)
Avatar billede softspot Forsker
01. juli 2005 - 11:55 #9
Tak for point :)

Har lige et apr foreslag til hvordan man kan tage individuel beslutning om hvor der skal vises bekræftigelse:

<%@ language="vbscript" %>
<%
scriptName = Request.ServerVariables("SCRIPT_NAME")
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >

<html>
  <head>
    <title>testDropdown</title>
    <script type="text/javascript" language="javascript">
      function doChange(e)
      {
        var evt = (e ? e : event);
        var src = (evt.srcElement ? evt.srcElement : evt.target);
        if(src.tagName == "SELECT")
        {
          if(src.selectedIndex > 0 && src.options[src.selectedIndex].className == "doConfirm")
            if(confirm("Sure?"))
              window.location = src.options[src.selectedIndex].value;
        }
        return true;
      }
    </script>
  </head>
  <body>
   
    <form id="Form1" method="post">
      <select onchange="doChange(event)">
        <option value="">Vælg</option>
        <option value="<%=scriptName %>?id=1" class="doConfirm">valg 1</option>
        <option value="<%=scriptName %>?id=2" class="">valg 2</option>
        <option value="<%=scriptName %>?id=3" class="doConfirm">valg 3</option>
        <option value="<%=scriptName %>?id=4" class="doConfirm">valg 4</option>
        <option value="<%=scriptName %>?id=5" class="">valg 5</option>
      </select>
    </form>
   
  </body>
</html>


Du kan også bruge en custom-attribut på den enkelte <option>, f.eks. showConfirm="1". Denne hentes så ved at kalde metoden getAttribute("showConfirm") på den valgte option. Koden skal så se ud som følger:

<%@ language="vbscript" %>
<%
scriptName = Request.ServerVariables("SCRIPT_NAME")
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >

<html>
  <head>
    <title>testDropdown</title>
    <script type="text/javascript">
      function doChange(e)
      {
        var evt = (e ? e : event);
        var src = (evt.srcElement ? evt.srcElement : evt.target);
        if(src.tagName == "SELECT")
        {
          if(src.selectedIndex > 0 && src.options[src.selectedIndex].getAttribute("showConfirm") == "1")
            if(confirm("Sure?"))
              window.location = src.options[src.selectedIndex].value;
        }
        return true;
      }
    </script>
  </head>
  <body>
   
    <form id="Form1" method="post">
      <select onchange="doChange(event)">
        <option value="">Vælg</option>
        <option value="<%=scriptName %>?id=1" showConfirm="1">valg 1</option>
        <option value="<%=scriptName %>?id=2" showConfirm="0">valg 2</option>
        <option value="<%=scriptName %>?id=3" showConfirm="1">valg 3</option>
        <option value="<%=scriptName %>?id=4" showConfirm="1">valg 4</option>
        <option value="<%=scriptName %>?id=5" showConfirm="0">valg 5</option>
      </select>
    </form>
   
  </body>
</html>
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