Avatar billede cyberdude Nybegynder
02. juni 2005 - 19:37 Der er 11 kommentarer og
1 løsning

udfyld 2 felter i formular ud fra valg i dropdown

hejsa

Jeg har følegende script

<script type="text/css" media="screen">
valg = new Array();
<?
$a = 0;
$hent=sql("select amt,kommune,region from region_oversigt");
while($row=mysql_fetch_row($hent)) {
$b = 0;
echo "valg[$a] = new Array();\n";
echo "valg[$a][$b] = \"$row[0]\";\n";
$b++;
echo "valg[$a][$b] = \"$row[1]\";\n";
$b++;
echo "valg[$a][$b] = \"$row[2]\";\n";
$a++;
}
?>

function opdater(inp) {
for (i=0; i<valg.length; i++){
if (valg[i][0] == inp.value) {
inp.form.region_gl.value = valg[i][1];
inp.form.amt_gl.value = valg[i][2];
return true;
}
}
inp.focus();
alert( "Ukendt varenummer: "+inp.value+", prøv igen" );
return false;
}
</script>

dette script generere følgende kode

        <script type="text/css" media="screen">
valg = new Array();
valg[0] = new Array();
valg[0][0] = "København";
valg[0][1] = "København
";
valg[0][2] = "4";
valg[1] = new Array();
valg[1][0] = "København";
valg[1][1] = "Frederiksberg
";
valg[1][2] = "4";
valg[2] = new Array();
valg[2][0] = "København";
valg[2][1] = "Ballerup
";
valg[2][2] = "4";
valg[3] = new Array();
valg[3][0] = "København";
valg[3][1] = "Brøndby
";

så har jeg følgende formular

<form id="aendropl" action="submit.form.php" method="post" name="aendropl">
<div id="regiongl">
                    <input class="txtfield" type="text" name="region_gl" size="24" style="width: 450px; height: 20px"></div>
                <div id="amtgl">
                    <input class="txtfield" type="text" name="amt_gl" size="24" style="width: 450px; height: 21px"></div>
                <div id="kommunegl">
                    <select class="txtfield" name="kommune_gl" onChange="opdater(this);" size="1" style="width: 455px; height: 21px">
                        <?
                        $hent=sql("select amt,kommune,region from region_oversigt");
                        while($row=mysql_fetch_row($hent)) {
                        ?>
                        <option value="<?=$row[1];?>"><?=$row[1];?></option>
                        <?
                        }
                        ?>
                    </select></div>

Men det giver blot en javescript fejl på linie "7 miliarder og et eller andet" - eller ca. der omkring

Jeg benytter ovenstående script i en anden forbindelse hvor man indtaster noget tekst i et input felt og 2 andre input felter bliver så udfyldt med forud-defineret tekst, og her funger det fint

Nogen der kan hjælpe med hvad det er der skal ændres ??
Avatar billede roenving Novice
02. juni 2005 - 23:48 #1
-- jeg går ud fra at du også har et </script>-tag et sted, men i hvert fald er det ugyldigt i javascript at have linjeskift i en tekst-variabel, så denne linje vil lave den første fejl:

valg[0][1] = "København
";

-- hvordan det går til, at der er det linjeskift, ved jeg ikke, men det ser ud til at stamme fra din database ...
Avatar billede cyberdude Nybegynder
03. juni 2005 - 11:27 #2
okay, det er nu fikset

men det funger stadig ikke... ?
Avatar billede cyberdude Nybegynder
03. juni 2005 - 12:05 #3
Nu ser mit script sådant her ud :
        <script type="text/css" media="screen">
valg = new Array();
<?
$a = 0;
$hent_vare=sql("select amt,kommune,region from region_oversigt");
while($row=mysql_fetch_row($hent_vare)) {
$row[1] = stripslashes($row[1]);
$b = 0;
echo "valg[$a]] = new Array();\n";
echo "valg[$a][$b] = \"$row[0]\";\n";
$b++;
echo "valg[$a][$b] = \"$row[1]\";\n";
$b++;
echo "valg[$a][$b] = \"$row[2]\";\n";
$a++;
}
?>

function opdater(inp) {
for (i=0; i<valg.length; i++){
if (valg[i][1] == inp.value) {
inp.form.region_gl.value = valg[i][2];
inp.form.amt_gl.value = valg[i][0];
return true;
}
}
inp.focus();
alert( "Ukendt : "+inp.value+", prøv igen" );
return false;
}
</script>

Og så melder den fejl i linie 1188 hvilket er denne her linie
<select class="txtfield" name="kommune_gl" onChange="opdater(this);" size="1" style="width: 455px; height: 21px">

jeg får fejlen :
line : 1188
char : 1
error : Object expected
Avatar billede roenving Novice
04. juni 2005 - 12:27 #4
Kan du linke til outputtet fra dit php-script, for den fejlmeddelelse betyder, at den ikke kan finde funktionen !-)
Avatar billede cyberdude Nybegynder
04. juni 2005 - 15:55 #5
Avatar billede roenving Novice
04. juni 2005 - 16:01 #6
Du må have en fejl i dit php-script, for den har genereret dette:

valg[0]] = new Array();

-- hvor der er en ] for meget !-)
Avatar billede cyberdude Nybegynder
04. juni 2005 - 16:07 #7
det er nu rettet - men stadig fejl...
Avatar billede cyberdude Nybegynder
04. juni 2005 - 16:13 #8
function opdater(inp) {
for (i=0; i<valg.length; i++){
if (valg[i][1] == inp.value) {
inp.form.region_gl.value = valg[i][2];
inp.form.amt_gl.value = valg[i][0];
return true;
}
}


Kan det have noget at gøre med den der inp.value når nu det er fra et select felt den skal hente værdien fra ??
Avatar billede roenving Novice
04. juni 2005 - 16:14 #9
-- funktionen står ikke i en gyldig javascript-blok !-)

Du har fået skrevet en start på tingen, som ikke giver nogen mening, da du har sat typen til at være css og iøvrigt har en media-attribut på, så udskift script-tagget med:

        <script type="text/javascript">
Avatar billede roenving Novice
04. juni 2005 - 16:15 #10
-- og så kørte den uden problemer hos mig, så velbekomme '-)
Avatar billede cyberdude Nybegynder
04. juni 2005 - 16:16 #11
ups... det havede jeg ike set.. nå ddet er nu rettet, og så funger det...

smid et svar og du får point :-)

Tak for hjælpen og tålmodigheden :-))
Avatar billede roenving Novice
04. juni 2005 - 16:26 #12
-- og jeg takker 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