Avatar billede reino Nybegynder
25. maj 2006 - 21:27 Der er 4 kommentarer og
1 løsning

Comboboks med 3 selects

Hej

Har følgende script:

<html>
<head>

<%
set conn = server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="

SQL = "SELECT [land], [hoejde], [pris] FROM flag ORDER BY [land], [hoejde], [pris]"


Set rs = Conn.Execute(SQL)

rsArr = rs.GetRows()
'Så er [Producent] i rsArr(0,i), [Model] er i rsArr(1,i), [Varenummer] er i rsArr(2,i)
Conn.Close
%>

<script language="javascript" type="text/javascript">
var arr = [
<%
oldValg1 = ""
oldValg2 = ""
for i = 0 to ubound(rsArr,2)
  if oldValg1 <> rsArr(0,i) then
    Response.write "['" & rsArr(0,i) & "', [" & vbCrLf
    oldValg1 = rsArr(0,i)
  end if

  if oldValg2 <> rsArr(1,i) then
    Response.write "['" & rsArr(1,i) & "'"
    oldValg2 = rsArr(1,i)
    newValg2 = true
  end if
  if newValg2 then
    Response.write "," & vbCrLf & "["
    newValg2 = false
  end if
 
  Response.write "'" & rsArr(2,i) & "'"
 
  t = i+1
  if t <= ubound(rsArr,2) then
    endValg = false
    if oldValg2 <> rsArr(1,t) then
      Response.write "]]"
      endValg = true
    end if
    if oldValg1 <> rsArr(0,t) then
      Response.write "]]"
      endValg = true
    end if
    Response.write ","
    if endValg = true then response.write vbCrLf
  else
    Response.write "]]]]"
  end if
next
%>
];
</script>
</head>
<body>
<script language="javascript" type="text/javascript">
function initSels(){
    createOpts(document.getElementById('sel3'));
}

function createOpts(sel){
    var s = new Array();
    var num = 0, txt = "arr";
    var ar = opt = null;
    var n = sel.selectedIndex;
    var args = createOpts.arguments.length;
    for(var i=1;args>i;i++){
        s[i-1] = document.getElementById(createOpts.arguments[i]);
        if(s[i-1]==sel)num=i;
    }
    if(args>1){
        if(s[num])sel = s[num];
        else return;
    }
    if(n==0&&args>1){
        for(i=num;args>i+1;i++){
            s[i].length = 0;
            opt = document.createElement('OPTION');
            s[i].appendChild(opt);
            opt.value = "";
            opt.text = "\74-- Vælg --";
        }
        return true
    };
    for(i=0;num>i;i++){
        txt+="["+(s[i].selectedIndex-1)+"][1]";
    }
    ar = eval(txt);
    sel.length = 0;
    opt = document.createElement('OPTION');
    sel.appendChild(opt);
  opt.value = "";
  opt.text = "-- Vælg --";
    for(i=0;ar.length>i;i++){
        opt = document.createElement('OPTION');
        sel.appendChild(opt);
        if(typeof ar[i] == 'object'){
          opt.value = ar[i][0];
          opt.text = ar[i][0];
        }else{
          opt.value = ar[i];
          opt.text = ar[i];
      }
    }
    if(args>num+2){
        for(i=num+1;args-1>i;i++){
            s[i].length = 0;
            opt = document.createElement('OPTION');
            s[i].appendChild(opt);
            opt.value = "";
            opt.text = "\74-- Vælg --";
        }
    }
}
</script>
</head>

<body style="FONT-SIZE: 12px" onload="initSels()">

<form>
Land:
<select name="sel3" id="sel3" onchange="createOpts(this,'sel3','sel4','sel5');">
  <option value="" selected>Vis alle</option>
</select>
<br>
Hoejde:
<select name="sel4" id="sel4" onchange="createOpts(this,'sel3','sel4','sel5');">
<option value="" selected>&lt;-- Vælg --</option>
</select>
<br>
Prisen er:
<select name="sel5" id="sel5">
<option value="" selected>&lt;-- Vælg --</option>
</select>
<input size="8"  name="sel5" id="sel5">

</body>
</html>

Dette virker fint, dog vil jeg nu gerne have lavet det sådan at sel5 automatiskt blive vist i en input box istedet. Er dette muligt ?
Avatar billede mclemens Nybegynder
25. maj 2006 - 23:11 #1
sorry lige et alternativt script hvis det matcher godt nok...
- id og names skal nok lige rettes til så ...


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">

var optinpm=['Vælg','Sko','Bil','Slik'];
var optinp=[['Vælg type'],['Adidas','Fila','Levis','Nike','Wrangler'],['Audi','Ford','Mazda','Opel','Pontiac'],['Heksehyl','Skolekridt','Skumbananer']];
var optnrval=[['Vælg mærke'],[100,200,300,300,300],[100000,200000,300000,300000,300000],[2,2,2]];

function domopt(tmpnr,tmpval){



  sel=document.getElementsByName(tmpnr)[0];
  while(sel.childNodes.length>0)sel.removeChild(sel.childNodes[0]);
  if(tmpnr=='drop1')tmparr=optinpm;
  else tmparr=optinp[tmpval];

  for(i=0;i<tmparr.length;i++){
    tmpnode=document.createElement("option");
    tmptxt=document.createTextNode(tmparr[i]);
    tmpnode.appendChild(tmptxt);
    sel.appendChild(tmpnode);
  }

  if((tmpnr=='drop1')||(tmpnr=='drop2')&&(tmpval==0)){
    document.getElementsByName('drop2')[0].setAttribute("disabled","disabled");
  }else document.getElementsByName('drop2')[0].removeAttribute("disabled");

}



function domopt3(){

  var inpopt=document.getElementsByName('inpopt')[0];
  inpopt.value=optnrval[document.getElementsByName('drop1')[0].selectedIndex][document.getElementsByName('drop2')[0].selectedIndex];

}



window.onload=function(){

  document.getElementsByName('drop1')[0].onchange=function(){domopt('drop2',this.selectedIndex);domopt3(0)}
  document.getElementsByName('drop2')[0].onchange=function(){domopt3(this.selectedIndex);}

  domopt('drop2',0);domopt('drop1',0);

}

</script>

<style type="text/css">
html,body{padding:0px;margin:0px;}
body{margin:10px;}
div.leftit{float:left;width:100px;}
select{width:200px;}
</style></head>

<body>

<div class="leftit">Vælg type:</div>

<select size="1" name="drop1">
<option>Javascript kræves</option>
</select>

<br>

<div class="leftit">Vælg mærke:</div>

<select size="1" name="drop2">
<option>Javascript kræves</option>
</select>

<br>

<div class="leftit">Prisen er:</div>

<input size="8" name="inpopt">

</body></html>
Avatar billede mclemens Nybegynder
25. maj 2006 - 23:38 #2
p.s.: domopt3(this.selectedIndex) og domopt3(0); rettes til: domopt3();

i dit eget script kan <select name="sel4" id="sel4" onchange="createOpts(this,'sel3','sel4','sel5');"> måske bare rettes til:

<select name="sel4" id="sel4" onchange="createOpts(this,'sel3','sel4','sel5');domopt3();">

og

<select name="sel3" id="sel3" onchange="createOpts(this,'sel3','sel4','sel5');">

til

<select name="sel3" id="sel3" onchange="createOpts(this,'sel3','sel4','sel5');domopt3();">

og tilføjelse af var optnrval arrayet samt
domopt3 funktionen med tilrettelse af name's

- ved ikke helt hvilket script der ville være bedst (har ikke
prøvet dit script af da asp ikke er noget jeg har læst om)
Avatar billede mclemens Nybegynder
29. juli 2006 - 11:22 #3
Hjalp det?
Avatar billede reino Nybegynder
31. juli 2006 - 07:07 #4
hejsa, jeps, er bare ikke lige kommet tilbage :)
Avatar billede mclemens Nybegynder
31. juli 2006 - 08:45 #5
Lækkert, og tak for point :o)
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