Avatar billede Jman Praktikant
24. januar 2005 - 21:27 Der er 25 kommentarer og
2 løsninger

En dropdown ændrer input i mange tekstfelter

Hvordan kan man gøre sådan at man ved en drodown
<select>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>

Kan ændrer value i en hulens masse efterfølgende inputfelter.

-Altså hvis man vælger 1, så bliver inputfelternes værdi ændret til 1
Avatar billede loevgaard Praktikant
24. januar 2005 - 22:16 #1
<select id="select1" onchange="update();">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<input type="text" id="input1">
<script language="JavaScript">
function update() {
document.getElementById('input1').value=document.getElementById('select1').value;
}
</script>

Sådan du mener :)?
Avatar billede Jman Praktikant
24. januar 2005 - 22:30 #2
mjaeh -- men den ændrer kun første input-box .. :/
Avatar billede Jman Praktikant
24. januar 2005 - 23:16 #3
tillægsspørgsmål.. hvad nu hvis man har tre felter, der skal have samme ovenstående funktion.
Kan man godt have det på samme side ?
Avatar billede softspot Forsker
24. januar 2005 - 23:19 #4
Prøv dette:

<html>

<head>
    <title>Test af select-styret indhold i input-felter</title>
</head>

<body>
    <form id="frm">
        <select id="select1" onchange="update();" NAME="select1">
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="4">4</option>
            <option value="5">5</option>
        </select><br>
        <input type="text" id="input1" NAME="input1"><br>
        <input type="text" id="input1" NAME="input1"><br>
        <input type="text" id="input1" NAME="input1"><br>
        <input type="text" id="input1" NAME="input1"><br>
        <input type="text" id="input1" NAME="input1"><br>
        <input type="text" id="input1" NAME="input1"><br>
        <input type="text" id="input2" NAME="input2"><br>
        <input type="text" id="input2" NAME="input2"><br>
        <script language="JavaScript">
            function update() {
                var inputs = document.getElementsByTagName('INPUT');
                var selValue = document.getElementById('select1').value;
                for(var i = 0; i < inputs.length; i++)
                    if(inputs[i].id == "input1")
                        inputs[i].value = selValue;
            }
        </script>
    </form>   
</body>

</html>
Avatar billede Jman Praktikant
24. januar 2005 - 23:35 #5
softsport - Kan du lave den i henhold til mit tillægsspørgsmål?
Avatar billede softspot Forsker
24. januar 2005 - 23:43 #6
Så kunne jeg forestille mig noget med en parameter på update-funktionen:

function update(ctlName) {
  var inputs = document.getElementsByTagName('INPUT');
  var selValue = document.getElementById('select1').value;
  for(var i = 0; i < inputs.length; i++)
    if(inputs[i].id == ctlName)
      inputs[i].value = selValue;
}


og kald den således:

<select id="select1" onchange="update('input1');" NAME="select1">
Avatar billede Jman Praktikant
24. januar 2005 - 23:52 #7
ja, næsten....
Men det er stadig værdien i select1, der bliver medført
Avatar billede softspot Forsker
25. januar 2005 - 08:03 #8
function update(ctlSelect, ctlName) {
  var inputs = document.getElementsByTagName('INPUT');
  var selValue = ctlSelect.value;
  for(var i = 0; i < inputs.length; i++)
    if(inputs[i].id == ctlName)
      inputs[i].value = selValue;
}


og kald den således:

<select id="select1" onchange="update(this, 'input1');" NAME="select1">
Avatar billede Jman Praktikant
25. januar 2005 - 11:24 #9
Hej igen
Nu virker det - men kun på <input type"text">. Hvordan kan det være at den ikke vil på <option> ?
Avatar billede Jman Praktikant
25. januar 2005 - 19:04 #10
Jeg hæver lige point for en løsning på sidstnævnte kommentar  :o)
Avatar billede roenving Novice
25. januar 2005 - 22:56 #11
Det er udtrykkeligt forbudt at have mere en een med den samme unikke identifikator (id !-)

Det skal derfor laves på en anden måde, hvis det skal have en chance for at virke under alle almindelige omstændigheder ...

-- og l0vgaards oprindelige skal jo ikke ændres voldsomt meget for at virke:

<script type="text/javascript">
function update(sel) {
  var e = sel.form.elements;
  for(i=0;i<e.length;i++){
    if(e[i].type=='text'&&e[i].name.indexOf('input')==0)
      e[i].value = sel.value;
    else if(e[i].type.indexOf('select')==0&&e[i].name.indexOf('selInput')==0){
      for(j=0;j<e[i].length;j++){
        if(e[i].options[j].value == sel.value){
          e[i].options[j].selected = true;
          break;
        }
      }
    }
  }
}
</script>
<form>
  <select id="select1" onchange="update(this);">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
  </select><br>
  <input type="text" id="input0" name="input0"><br>
  <input type="text" id="input1" name="input1"><br>
  <input type="text" id="input2" name="input2"><br>
  <input type="text" id="input3" name="input3"><br>
  <input type="text" id="input4" name="input4"><br>
  <input type="text" id="input5" name="input5"><br>
  <input type="text" id="input6" name="input6"><br>
  <input type="text" id="input7" name="input7"><br>
  <input type="text" id="input8" name="input8"><br>
  <select id="selinput0" name="selInput0"><br>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
  </select>
  <select id="selinput0" name="selInput0"><br>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
  </select>
</form>
Avatar billede softspot Forsker
25. januar 2005 - 23:06 #12
Hvordan laver med et controlarray, hvis man ikke må give kontrollerne det samme id?
Avatar billede Jman Praktikant
25. januar 2005 - 23:12 #13
roenvig. den holder ikke helt, da jeg skal bruge det i et loop.
Her er min kode:

<% do while not rs.eof %>
<input type="hidden" name="id" value="<%=rs("id")%>">
<p class="format">
  <select name="select1" id="input1">
  <% do while not rsSize.eof %>
  <option value="<%=rsSize("size")%>"></option>
  <%
  rsSize.movenext
  loop
  %>
  </select>
</p>
<p><input type="text" name="select2" id="input2" value="<% =rs("antal") %>" size="2"></p>
<p class="format">
  <select name="select3" id="input3">
  <% do while not rsQual.eof %>
  <option value="<%=rsQual("Qual")%>"></option>
  <%
  rsQual.movenext
  loop
  %>
  </select>
</p>
<% rs.movenext
loop
%>

Der kan så være 1 eller op til 100 records under hinanden, hvor jeg så gerne vil kunne ændre:
-hver enkelt "Selcet1" record med en overordnet drop down
-hver enkelt "select2" record med en overordnet drop down
-hver enkelt "Selcet3" record med en overordnet drop down

De overordnede dropdowns får naturligvis samme options :o)
Avatar billede roenving Novice
25. januar 2005 - 23:13 #14
I ovenstående udnytter jeg at alle inputs navne starter med 'input' og select-boksene starter med 'selInput', på den måde kan jeg benytte mig af den collection, som et forms elementer er ...

En anden måde at gøre det på, er at skabe et array af names eller id'er, som der så slås op i !-)

f.eks.

var e = ['input1','selInput4'];//osv.
Avatar billede roenving Novice
25. januar 2005 - 23:14 #15
>>superior

Hvorfor er det et problem ?-)

Har du prøvet at tilrette linjen, hvor selectenes name undersøges ?o]
Avatar billede Jman Praktikant
25. januar 2005 - 23:19 #16
Ja, når jeg skal opdatere .. hvis jeg i hvert fald forstår dig :o)

arrid = Split(Request.form( "id" ),",")
arrsize = Split( Request.form( "select1" ), ",")
arrquantity = Split( Request.form( "select2" ) ,",")
arrquality = Split( Request.form( "select3" ), ",")
for i = 0 to UBound(arrid)
    SQLstmt = "UPDATE UploadDB SET size = '" & replace(arrsize( i ),".",",") & "'"
    SQLstmt = SQLstmt & ", antal = " &arrquantity( i )& ""
    SQLstmt = SQLstmt & ", quality = '"& arrquality( i ) &"'"
    SQLstmt = SQLstmt & " WHERE id = " & arrid( i )
    response.write SQLstmt
    conn.Execute (SQLstmt)
next
Avatar billede softspot Forsker
25. januar 2005 - 23:20 #17
roenving > ja, det er naturligvis muligheder, men er det ikke standard DHTML at man kan lave controlarrays ud af kontroller på en webform?
Avatar billede roenving Novice
25. januar 2005 - 23:23 #18
>>softspot

Jo, men kun med name-propertyen !-)
Avatar billede softspot Forsker
25. januar 2005 - 23:32 #19
fair nok (jeg tænkte nok der var et rimelig svar på det spørgsmål - tak for det roenving :)).
Avatar billede Jman Praktikant
25. januar 2005 - 23:57 #20
kan ikke få det til at virke.. :/
Avatar billede roenving Novice
26. januar 2005 - 00:13 #21
Kan du uploade et eksempel og linke til det ?-)
Avatar billede Jman Praktikant
26. januar 2005 - 11:03 #22
jeg har lavet et udtag af siden her:
http://www.jman.dk/eksperten/select.asp

(det er godt nok tlbage til der, hvor bare en af tingene virkede. nemlig inputfeltet)
Avatar billede Jman Praktikant
26. januar 2005 - 13:14 #23
roenvig: Jeg har nu forsøgt helt forfra. Og jeg kan (næsten) få dit script til at virke. Og det er vist kun p.g.a. indholdet i de 2 select-bokse af de ikke ændrer sig simultant.
Men mit <input type=text> modtager værdien, uanset hvilken select jeg ændrer på..

se evt. her: http://www.jman.dk/eksperten/select3.asp
Avatar billede Jman Praktikant
26. januar 2005 - 13:42 #24
okay - har fået det til at virke med en kombo af ovenstående..
Men er der "bivirkninger" ved dette ?

kode:

<script type="text/javascript">
function update(sel) {
  var e = sel.form.elements;
  for(i=0;i<e.length;i++){
    if(e[i].type=='text'&&e[i].name.indexOf('input')==0)
      e[i].value = sel.value;
    else if(e[i].type.indexOf('select')==0&&e[i].name.indexOf('selInput')==0){
      for(j=0;j<e[i].length;j++){
        if(e[i].options[j].value == sel.value){
          e[i].options[j].selected = true;
          break;
        }
      }
    }
  }
}
</script>
<script type="text/javascript">
function updateAntal(ctlName) {
  var inputs = document.getElementsByTagName('INPUT');
  var selValue = document.getElementById('selectAntal').value;
  for(var i = 0; i < inputs.length; i++)
    if(inputs[i].id == ctlName)
      inputs[i].value = selValue;
}
</script>
<form>
    input:<br>
  størrelse<select id="select1" onchange="update(this);">
    <option value='10 x 13.5 cm (4:3)'>10 x 13,5 cm (4:3)</option>
    <option value='10 x 15 cm (3:2)'>10 x 15 cm (3:2)</option>
    <option value='13 x 17.4 cm (4:3)'>13 x 17,4 cm (4:3)</option>
    <option value='13 x 18 cm (3:2)'>13 x 18 cm (3:2)</option>
    <option value='15 x 21 cm'>15 x 21 cm</option>
    <option value='20 x 30 cm'>20 x 30 cm</option>
  </select> 
  antal<select id="selectAntal" onchange="updateAntal('inputAntal');">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
  </select>
  kvalitet<select id="select3" onchange="update(this);">
    <option value="almindelig">almindelig</option>
    <option value="super">super</option>
  </select> 

    <br><br>

    Resultat:<br>
  Størrelse<select id="selinput1" name="selInput1"><br>
    <option value='10 x 13.5 cm (4:3)'>10 x 13,5 cm (4:3)</option>
    <option value='10 x 15 cm (3:2)'>10 x 15 cm (3:2)</option>
    <option value='13 x 17.4 cm (4:3)'>13 x 17,4 cm (4:3)</option>
    <option value='13 x 18 cm (3:2)'>13 x 18 cm (3:2)</option>
    <option value='15 x 21 cm'>15 x 21 cm</option>
    <option value='20 x 30 cm'>20 x 30 cm</option>
  </select>

  antal<input type="text" id="inputAntal" name="Antal" size=1 value="1">
  kvalitet<select id="selinput3" name="selInput3"><br>
    <option value="almindelig">almindelig</option>
    <option value="super">super</option>
  </select>
</form>
Avatar billede Jman Praktikant
26. januar 2005 - 14:03 #25
...og roenvig .. læg lige et svar, så i to kan dele :o)
Avatar billede roenving Novice
26. januar 2005 - 17:18 #26
Oki '-)
Avatar billede roenving Novice
26. januar 2005 - 17:37 #27
-- og tak for point ;~}
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