webForumDet fria alternativet

...värdet följer inte med...

3 svar · 251 visningar · startad av annesophie

annesophieMedlem sedan juni 20012 236 inlägg
#1

Hej,

Jag har ett vanligt formulär med data som ska läggas in i databas. Inne i formuläret har jag boxar SELECT MULTI (se attached bild) där man kan skicka värden från en till en annan. I mitt fall ska jag välja en eller flera applikationsområden för produkter som ska läggas till i databasen. Men det krånglar lite...

Själva select boxarna funkar. Jag kan skicka värden i dessa fram och tillbaka. Det är först när jag skickat iväg detta formulär till databasen som jag ser att, på de ställen där jag gör flera val med SELECT multi, kommer värdena inte med.

Något nerkortat exempel:

<FORM method="post" action="addproductcheck.asp" name="combi_box">
<TABLE>
<TR>
<TD>ArtNo:</TD>
<TD>
<input type="text" name="artNo" size="30" class="input">
</TD>
</TR>
<TR>
<TD>ProductName:</TD>
<TD>
<input type="text" name="product" size="30" class="input">
</TD>
</TR>
<TR>
<TD align="left" valign="top">Application Area/s:</TD>
<TD align="left" valign="top">
<FORM name="combo_box">
<TABLE border="0">
<TR>
<TD align="left" valign="top">
<select multiple size="10" name="list1" style="width:150" class="input">
<%do until rs5.eof%>
<option value="<%=rs5("applicationArea")%> <br>"><%=rs5("applicationArea")%>
<%rs5.movenext
loop%>
</select>
</TD>
<TD align="center" valign="middle">
<input type="button" onClick="move(this.form.applicationArea,this.form.list1)" value="<<" class="input">
<input type="button" onClick="move(this.form.list1,this.form.applicationArea)" value=">>" class="input">
</TD>
<TD align="left" valign="top">
<!--Inga varden foljer med fran ApplicationArea-->

<select multiple size="10" name="applicationArea" style="width:150" class="input"></select>
</TD>
</TR>
</TABLE>
</FORM>
</TD>
</TR>
<TR>
<TD>
<input type="submit" value="Send">
</TD>
</TR>
</TABLE>
</FORM>

...och detta är JS koden för boxarna:

<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
function move(fbox, tbox) {
var arrFbox = new Array();
var arrTbox = new Array();
var arrLookup = new Array();
var i;
for (i = 0; i < tbox.options.length; i++) {
arrLookup[tbox.options[i].text] = tbox.options[i].value;
arrTbox[i] = tbox.options[i].text;
}
var fLength = 0;
var tLength = arrTbox.length;
for(i = 0; i < fbox.options.length; i++) {
arrLookup[fbox.options[i].text] = fbox.options[i].value;
if (fbox.options[i].selected && fbox.options[i].value != "") {
arrTbox[tLength] = fbox.options[i].text;
tLength++;
}
else {
arrFbox[fLength] = fbox.options[i].text;
fLength++;
   }
}
arrFbox.sort();
arrTbox.sort();
fbox.length = 0;
tbox.length = 0;
var c;
for(c = 0; c < arrFbox.length; c++) {
var no = new Option();
no.value = arrLookup[arrFbox[c]];
no.text = arrFbox[c];
fbox[c] = no;
}
for(c = 0; c < arrTbox.length; c++) {
var no = new Option();
no.value = arrLookup[arrTbox[c]];
no.text = arrTbox[c];
tbox[c] = no;
   }
}
//  -->
</SCRIPT>
</HEAD>

Jag har verkligen kört fast helt...och vet inte vart jag ska börja nysta. Då jag inte heller är någon mästare på JS så hoppas jag att någon guru här kan hjälpa mig! :) Det är liksom JS delen som inte tycks göra det jag vill...eller trodde att den borde göra. Den "registrerar" inte innehåller i "applicationArea" boxen alls. Vad är det jag missar??

/A

ex.jpg
solbulleMedlem sedan mars 20015 287 inlägg
#2

Tycker mig känna igen det där lite grann.
Här kommer min lilla tolkning av problemet, dock ingen färdig lösning.
Det jag tror händer när du postar ditt formulär är att endast det markerade fältet i select nr2 kommer till databasen eftersom det bara är det som eg. är valt.
Lösningen är, tror jag, att antingen markera hela selecten alternativ lägga alla alternativ i ett hidden-fält och posta det.

solbulleMedlem sedan mars 20015 287 inlägg
#3

En lite nkodsnutt jag använder till ett liknande fall: (om jag inte misstar mig helt.)

function saveMeTo() {
var strValues = "";
var boxLength = document.formen.list1.length;
var count = 0;
if (boxLength != 0) {
for (i = 0; i < boxLength; i++) {
if (count == 0) {
strValues = document.formen.list1.options[i].value;
}
else {
strValues = strValues + "," + document.formen.list1.options[i].value;
}
count++;
   }
}

document.formen.textfield2.value = strValues
}
annesophieMedlem sedan juni 20012 236 inlägg
#4

OK, tack så mycket jag ska genast testa! :)

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)