25. april 2001 - 16:15
Der er
27 kommentarer og 1 løsning
Et bøvlet problem.
Hejsa.. Jeg skal checke på en side om en radiobutton er blevet aktiveret og om der er valgt noget i den tilhørende selectbox. Problemet heri er, at hele siden bliver opbygget dynamiskt og selectboxen har id\'et på størrelsen (den tilhørende radio button) som navn.. hvad gør man. Når formen det hele ligger i bliver submitted skal scriptet undersøge om der er valgt en radiobutton og om der er valgt noget i den tilhørende selectbox, hvis ikke skal den komme med en alert box.. Nogen ideer?
Annonceindlæg fra Kingston Technology
25. april 2001 - 17:00
#1
Kan du ikke smide et link, så jeg kan se din opbygning...
25. april 2001 - 19:19
#2
var selnvn; var rad = document.form_mavn.radio_navn; // det er kendt ikke for ( var i=0; rad.length>i; i++ ) if ( rad[i].checked ) { selnvn = rad[i].id; // navn på tilhørende select box break; }; if ( document.form_navn.elements[selnvn].selectedIndex >= 0 ) { // der er valgt noget. brug det return true; // success } else { // der er ikke valgt noget. alert( \"du skal vælge noget i tilsvarende selectbox\" ); return false; // fejlede }; mvh JakobA
25. april 2001 - 19:21
#3
ups: form_mavn mente form_navn dvs udskift med navnet på din form.
26. april 2001 - 09:07
#4
Hmm... koden er blevet til: function checkstuff( frm ) { var selnvn; var rad = document.frm.selectedsize; for ( var i=0; rad.length>i; i++ ) if ( rad[i].checked ) { selnvn = rad[i].id; // navn på tilhørende select box break; }; if ( frm.elements[selnvn].selectedIndex >= 0 ) { // der er valgt noget. brug det return true; // success } else { // der er ikke valgt noget. alert( \"du skal vælge noget i tilsvarende selectbox\" ); return false; // fejlede }; }; og bliver kaldt med: <input type=\"button\" onclick=\"checkstuff(this.form)\"> Men der kommer en fejl: document.frm.selectedsize er null eller ikke et object
26. april 2001 - 09:13
#5
der skal ikke stå document. foran. det du giver som parameter er jo et link til præcis den form du mener. så blot: var rad = frm.selectedsize;
26. april 2001 - 09:18
#6
Hmm.. :o) Det hjalp lidt.. Nu kommer den med elements[...].selectedIndex er null eller ikke et objekt
26. april 2001 - 12:16
#7
?
26. april 2001 - 13:39
#8
Har du sat navn Name=\"blabla\" på din form <form name=\"blabla\"> og dine <input type=\"button\" name=\"blablaKnappen\" onClick=\"chechstuff(this.form)\">???
26. april 2001 - 14:45
#9
scriptet forudsætter at selectedsize er navnet på din gruppe med radioknapper: <input type=\'radio\' ... name=\"selectedsize\"> hvis det ikke passer så tag og post hele sourcen (eller peg på den på nettet) mvh JakobA
26. april 2001 - 15:07
#10
\"peg på den på nettet\" er det ikke det vi andre alm dødelige kalder et link?? *ggg*
26. april 2001 - 16:17
#11
<? session_start(); include(\"db_ind.inc\"); $vareresult = mysql_query(\"SELECT * FROM vare WHERE vareid = \'$vareid\'\") OR DIE(mysql_error()); $navn = mysql_result($vareresult,0,\"navn\"); $beskrivelse = mysql_result($vareresult,0,\"beskrivelse\"); $billede_teaser = mysql_result($vareresult,0,\"billede_teaser\"); $billede_vare = mysql_result($vareresult,0,\"billede_vare\"); $x_size = mysql_result($vareresult,0,\"x_size\"); $y_size = mysql_result($vareresult,0,\"y_size\"); ?> <script language=\'javascript\'> function docalc( frm ) { var antal = frm.antal.value; var check = frm.prisnumber.value; var pris; var vare; if(check == 1) { pris = frm.selectedsize.value.split(\';\'); vare = pris[0]; pris = parseFloat( pris[1] ); }; else { for (var i=0; frm.selectedsize.length>i; i++ ) { if ( frm.selectedsize[i].checked ) { pris = frm.selectedsize[i].value.split(\';\'); vare = pris[0]; pris = parseFloat( pris[1] ); break; }; }; }; layerIEpris.innerHTML=\'<B>Pris: <FONT FACE=\"Verdana\" SIZE=\"2\">\'+ (pris) +\' Kr.</FONT></B>\'; layerIEialt.innerHTML=\'<B>I Alt: <FONT FACE=\"Verdana\" SIZE=\"2\">\'+ (antal*pris) +\' Kr.</FONT></B>\'; }; function checkstuff( frm ) { var selnvn; var rad = frm.selectedsize; for ( var i=0; rad.length>i; i++ ) if ( rad[i].checked ) { selnvn = rad[i].id; // navn på tilhørende select box break; }; if ( frm.elements[selnvn].selectedIndex >= 0 ) { return true; } else { alert( \"du skal vælge noget i tilsvarende selectbox\" ); return false; // fejlede }; }; </script> <html> <head> <title>Shop</title> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"> <script language=\"JavaScript\"> <!-- function MM_openBrWindow(theURL,winName,features) { //v2.0 window.open(theURL,winName,features); } //--> //indkob.php?callmsg=opret </script> </head> <body bgcolor=\"#FFFFFF\" text=\"#000000\" leftmargin=\"0\" topmargin=\"0\"> <div align=\"center\"> <form name=\"myForm\" method=\"post\" action=\"\"> <table width=\"622\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\" height=\"20\"> <tr> <td><font size=\"2\" face=\"Verdana\"><b><font color=\"#336699\"><font face=\"Verdana\" size=\"3\"><? echo($navn) ?></font></font></b></font><font size=\"2\" face=\"Verdana\"><b> </b></font></td> <td> <div align=\"right\"><font face=\"Verdana\" size=\"2\"><a href=\"shop1.php?current=<? echo($backcurrent) ?>&getVaregrp=<? echo($backgetVaregrp) ?>\"><img src=\"grafik/tilbage.jpg\" border=\"0\"></a></font></div> </td> </tr> </table> <table width=\"622\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\" height=\"5\"> <tr> <td valign=\"middle\"> <div align=\"center\"><img src=\"grafik/linie.jpg\" width=\"632\" height=\"5\"></div> </td> </tr> </table> <table width=\"617\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" height=\"295\"> <tr> <td height=\"295\" width=\"306\" valign=\"top\" background=\"grafik/cellebg.jpg\"> <div align=\"center\"> <input type=\"hidden\" name=\"vareid\" value=\"<? echo($vareid) ?>\"> <? $prisresult = mysql_query(\"SELECT strid, pris FROM pris WHERE vareid = \'$vareid\' AND aktiv = \'gron\'\") OR DIE(mysql_error()); $prisnumber = mysql_num_rows($prisresult); for($i=0; $i<$prisnumber; $i++) { $strid = mysql_result($prisresult,$i,\"strid\"); $pris = mysql_result($prisresult,$i,\"pris\"); $strresult = mysql_query(\"SELECT str FROM str WHERE strid = \'$strid\'\") OR DIE(mysql_error()); $str = mysql_result($strresult,0,\"str\"); ?> <table width=\"100%\" border=\"0\" cellspacing=\"3\" cellpadding=\"0\"> <tr> <td width=\"22\"> <font face=\"Verdana\"> <font size=\"2\"> <input type=\"radio\" name=\"selectedsize\" id=\"<? echo($strid) ?>\" value=\"<? echo($strid . \";\" . $pris) ?>\" onclick=\"docalc(this.form);\"> <input type=\"hidden\" name=\"prisnumber\" value=\"<? echo($prisnumber) ?>\"> </font></font></td> <td width=\"96\"><font face=\"Verdana\" size=\"2\"><b><? echo($str) ?></b></font></td> <td width=\"188\"> <? /* List the colors patched to the different sizes */ $strfarveresult = mysql_query(\"SELECT * FROM pris WHERE vareid = \'$vareid\' AND strid = \'$strid\'\") OR DIE(mysql_error()); $strfarvenumber = mysql_num_rows($strfarveresult); if($strfarvenumber != 0 ) { if( $prisnumber != 1 ) { ?> <select onChange=\"document.myForm.selectedsize[<? echo($i) ?>].checked=true; docalc(this.form);\" name=\"<? echo($strid) ?>\" size=\"1\"> <option>Vælg Farve</option> <? } if( $prisnumber == 1 ) { ?> <select onChange=\"document.myForm.selectedsize.checked=true; docalc(this.form);\" name=\"<? echo($strid) ?>\" size=\"1\"> <option>Vælg Farve</option> <? } for($j=0; $j<$strfarvenumber; $j++) { $farveid = mysql_result($strfarveresult,$j,\"farveid\"); $farveresult = mysql_query(\"SELECT * FROM farve WHERE farveid = \'$farveid\'\") OR DIE(mysql_error()); $farvenumber = mysql_num_rows($farveresult); for($k=0; $k<$farvenumber; $k++) { $farveid = mysql_result($farveresult,$k,\"farveid\"); $farve = mysql_result($farveresult,$k,\"farve\"); ?> <option value=<? echo($farveid) ?>><? echo($farve) ?></option> <? } } ?> </select> <? } ?> </td> </tr> <tr> <td colspan=\"3\" height=\"1\" bgcolor=\"#000000\"></td> </tr> </table> <? } ?> </div> </td> <td height=\"295\" width=\"311\"> <table width=\"311\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" height=\"295\"> <tr> <td height=\"84\" valign=\"top\" width=\"311\"> <div align=\"left\"> <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"> <tr> <td width=\"10\"> </td> <td><font color=\"#336699\" size=\"2\"><? echo($beskrivelse) ?></font></td> </tr> </table> </div> </td> </tr> <tr> <td height=\"99\" bgcolor=\"#FFFFFF\"> <div align=\"center\"><a href=\"#\"><img src=\"<? echo($billede_teaser) ?>\" width=\"90\" height=\"69\" onClick=\"MM_openBrWindow(\'billed.php?showimage=<? echo($billede_vare) ?>\',\'\',\'width=<? echo($x_size) ?>,height=<? echo($y_size) ?>\')\" alt=\"Klik for større billede\" border=\"0\"></a></div> </td> </tr> <tr> <td height=\"22\" bgcolor=\"#FFFFFF\"> <div align=\"center\" id=\"layerIEpris\"><b>Pris: 0.00<font size=\"2\" face=\"Verdana\"></font></b></div> </td> </tr> <tr> <td height=\"33\" bgcolor=\"#FFFFFF\"> <div align=\"center\"><b><font face=\"Verdana\" size=\"3\">Antal:</font><font face=\"Verdana\" size=\"2\"> <input type=\"text\" name=\"antal\" size=\"3\" value=\"1\" onkeyup=\"docalc(this.form)\"> </font></b></div> </td> </tr> <tr> <td height=\"1\" bgcolor=\"#FFFFFF\"></td> </tr> <tr> <td height=\"23\" bgcolor=\"#FFFFFF\"> <div align=\"center\" id=\"layerIEialt\"><b>I Alt: 0.00<font size=\"2\" face=\"Verdana\"></font></b></div> </td> </tr> <tr> <td height=\"1\" bgcolor=\"#FFFFFF\"></td> </tr> <tr> <td height=\"32\" bgcolor=\"#FFFFFF\"> <div align=\"center\"> <input type=\"button\" src=\"grafik/knap.jpg\" onclick=\"checkstuff(this.form)\" name=\"IMAGE\" width=\"57\" height=\"23\"> </div> </td> </tr> </table> </td> </tr> </table> <? include(\"bund.php\"); ?> </form> </div> </body> </html>
26. april 2001 - 16:18
#12
Daaamn, der røg formateringen
26. april 2001 - 16:21
#13
Det skal lige siges, at submit knappen skal være et image når jeg er færdig, men er en button mens jeg tester
26. april 2001 - 23:46
#14
Håber ikke du mistede dine indrykninger i filen. god formattering er guld værd :) Såvidt jeg ved giver <input type=\'image\' og <input type=\'submit\' præcis samme virkemåde for knappen. Nedenfor har jeg indsat noget debugkode i din funktion checkstuff. Teorien er at id=\'xxx\' måske ikke kan anvendes til at identificere de enkelte radioknapper i gruppen. Istedet prøver jeg så at bruge første del af value som ser ud til altid at være det samme som navnet efter id= Hvis alerten angiver to ens navne er teorien forkert. hvis de to navne der kommer ikke er ens skulle det virke og du kan så blot fjerne debugkoden. function checkstuff( frm ) { var selnvn; var rad = frm.selectedsize; for ( var i=0; rad.length>i; i++ ) if ( rad[i].checked ) { selnvn =rad[i].value.substr(0,ras[i].value.indexOf(\';\')); // start of debugcode. var selnvn2 = rad[i].id; // navn på tilhørende select box alert( \"id=\'\"+selnvn2+\"\' selnvn=\'\"+selnvn+\"\'\" ); // end of debugcode break; }; if ( frm.elements[selnvn].selectedIndex >= 0 ) { return true; } else { alert( \"du skal vælge noget i tilsvarende selectbox\" ); return false; // fejlede }; }; mvh JakobA
27. april 2001 - 10:05
#15
Hej Igen Jacob.. jeg har smidt lidt flere point i puljen til dig.. :o) Den kommer stadig med fejlen: elements[...].selectedIndex er null eller ikke et objekt
27. april 2001 - 17:14
#16
hvad præcis siger alerten?
30. april 2001 - 08:04
#17
Det kommer lige her: Linie 44 Tegn 3 Fejl: \' elements[...].selectedindex\' er null eller ikke et objekt. Kode: 0 Håber det hjælper
30. april 2001 - 14:49
#18
Oh.. der var en skrivefejl i dit skript.. du kommer der en popup box, der indeholder texten: id=\'986541615\' selnvn=\'\'986541615\'
30. april 2001 - 14:53
#19
Dvs, de er ens :o/
30. april 2001 - 16:09
#20
Hovsa.. der skulle stå \"nu kommer der...\"
30. april 2001 - 22:37
#21
Hmm... Javascript bryder sig ikke om navne der starter med et ciffer, der skal være mindst et bogstav forrest i navnet. har du mulighed for at lægge et bogstav forrest i din variabel $strid? mvh JakobA
Det tror jeg.. jeg prøver lige
Nu kommer den ikke med en fejl mere.. men den siger, at man skal vælge en farve.. oxo selv om man har valgt en
er det denne fejl du snakker om alert( \"du skal vælge noget i tilsvarende selectbox\" ); ? Får variablen $strid bogstav foran allevegne den skal være ens?
Jeps.. Jeg checker lige om alle variable hedder det samme
Jeg mener det er lavet rigtigt.. prøv at se her: <? session_start(); include(\"db_ind.inc\"); $vareresult = mysql_query(\"SELECT * FROM vare WHERE vareid = \'$vareid\'\") OR DIE(mysql_error()); $navn = mysql_result($vareresult,0,\"navn\"); $beskrivelse = mysql_result($vareresult,0,\"beskrivelse\"); $billede_teaser = mysql_result($vareresult,0,\"billede_teaser\"); $billede_vare = mysql_result($vareresult,0,\"billede_vare\"); $x_size = mysql_result($vareresult,0,\"x_size\"); $y_size = mysql_result($vareresult,0,\"y_size\"); ?> <script language=\'javascript\'> function docalc( frm ) { var antal = frm.antal.value; var check = frm.prisnumber.value; var pris; var vare; if(check == 1) { pris = frm.selectedsize.value.split(\';\'); vare = pris[0]; pris = parseFloat( pris[1] ); }; else { for (var i=0; frm.selectedsize.length>i; i++ ) { if ( frm.selectedsize[i].checked ) { pris = frm.selectedsize[i].value.split(\';\'); vare = pris[0]; pris = parseFloat( pris[1] ); break; }; }; }; layerIEpris.innerHTML=\'<B>Pris: <FONT FACE=\"Verdana\" SIZE=\"2\">\'+ (pris) +\' Kr.</FONT></B>\'; layerIEialt.innerHTML=\'<B>I Alt: <FONT FACE=\"Verdana\" SIZE=\"2\">\'+ (antal*pris) +\' Kr.</FONT></B>\'; }; function checkstuff( frm ) { var selnvn; var rad = frm.selectedsize; for ( var i=0; rad.length>i; i++ ) if ( rad[i].checked ) { selnvn = rad[i].value.substr(0,rad[i].value.indexOf(\';\')); // start of debugcode. var selnvn2 = rad[i].id; // navn på tilhørende select box alert( \"id=\'\"+selnvn2+\"\' selnvn=\'\"+selnvn+\"\'\" ); // end of debugcode break; }; if ( frm.elements[selnvn].selectedIndex >= 0 ) { // debugger alert( \"hehehe\" ); //end debugger return true; } else { alert( \"Du skal vælge en farve\" ); return false; // fejlede }; }; </script> <html> <head> <title>Shop</title> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"> <script language=\"JavaScript\"> <!-- function MM_openBrWindow(theURL,winName,features) { //v2.0 window.open(theURL,winName,features); } //--> //indkob.php?callmsg=opret </script> </head> <body bgcolor=\"#FFFFFF\" text=\"#000000\" leftmargin=\"0\" topmargin=\"0\"> <div align=\"center\"> <form name=\"myForm\" method=\"post\" action=\"\"> <table width=\"622\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\" height=\"20\"> <tr> <td><font size=\"2\" face=\"Verdana\"><b><font color=\"#336699\"><font face=\"Verdana\" size=\"3\"><? echo($navn) ?></font></font></b></font><font size=\"2\" face=\"Verdana\"><b> </b></font></td> <td> <div align=\"right\"><font face=\"Verdana\" size=\"2\"><a href=\"shop1.php?current=<? echo($backcurrent) ?>&getVaregrp=<? echo($backgetVaregrp) ?>\"><img src=\"grafik/tilbage.jpg\" border=\"0\"></a></font></div> </td> </tr> </table> <table width=\"622\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\" height=\"5\"> <tr> <td valign=\"middle\"> <div align=\"center\"><img src=\"grafik/linie.jpg\" width=\"632\" height=\"5\"></div> </td> </tr> </table> <table width=\"617\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" height=\"295\"> <tr> <td height=\"295\" width=\"306\" valign=\"top\" background=\"grafik/cellebg.jpg\"> <div align=\"center\"> <input type=\"hidden\" name=\"vareid\" value=\"<? echo($vareid) ?>\"> <? $prisresult = mysql_query(\"SELECT DISTINCT strid, pris FROM pris WHERE vareid = \'$vareid\' AND aktiv = \'gron\'\") OR DIE(mysql_error()); $prisnumber = mysql_num_rows($prisresult); for($i=0; $i<$prisnumber; $i++) { $strid = mysql_result($prisresult,$i,\"strid\"); $pris = mysql_result($prisresult,$i,\"pris\"); $strresult = mysql_query(\"SELECT str FROM str WHERE strid = \'$strid\'\") OR DIE(mysql_error()); $str = mysql_result($strresult,0,\"str\"); ?> <table width=\"100%\" border=\"0\" cellspacing=\"3\" cellpadding=\"0\"> <tr> <td width=\"22\"> <font face=\"Verdana\"> <font size=\"2\"> <input type=\"radio\" name=\"selectedsize\" id=\"r<? echo($strid) ?>\" value=\"r<? echo($strid . \";\" . $pris) ?>\" onclick=\"docalc(this.form);\"> <input type=\"hidden\" name=\"prisnumber\" value=\"<? echo($prisnumber) ?>\"> </font></font></td> <td width=\"96\"><font face=\"Verdana\" size=\"2\"><b><? echo($str) ?></b></font></td> <td width=\"188\"> <? /* List the colors patched to the different sizes */ $strfarveresult = mysql_query(\"SELECT * FROM pris WHERE vareid = \'$vareid\' AND strid = \'$strid\'\") OR DIE(mysql_error()); $strfarvenumber = mysql_num_rows($strfarveresult); if($strfarvenumber != 0 ) { if( $prisnumber != 1 ) { ?> <select onChange=\"document.myForm.selectedsize[<? echo($i) ?>].checked=true; docalc(this.form);\" id=\"r<? echo($strid) ?>\" name=\"r<? echo($strid) ?>\" size=\"1\"> <option>Vælg Farve</option> <? } if( $prisnumber == 1 ) { ?> <select onChange=\"document.myForm.selectedsize.checked=true; docalc(this.form);\" id=\"<? echo($strid) ?>\" name=\"<? echo($strid) ?>\" size=\"1\"> <option>Vælg Farve</option> <? } for($j=0; $j<$strfarvenumber; $j++) { $farveid = mysql_result($strfarveresult,$j,\"farveid\"); $farveresult = mysql_query(\"SELECT * FROM farve WHERE farveid = \'$farveid\'\") OR DIE(mysql_error()); $farvenumber = mysql_num_rows($farveresult); for($k=0; $k<$farvenumber; $k++) { $farveid = mysql_result($farveresult,$k,\"farveid\"); $farve = mysql_result($farveresult,$k,\"farve\"); ?> <option value=\"<? echo($farveid) ?>\"><? echo($farve) ?></option> <? } } ?> </select> <? } ?> </td> </tr> <tr> <td colspan=\"3\" height=\"1\" bgcolor=\"#000000\"></td> </tr> </table> <? } ?> </div> </td> <td height=\"295\" width=\"311\"> <table width=\"311\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" height=\"295\"> <tr> <td height=\"84\" valign=\"top\" width=\"311\"> <div align=\"left\"> <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"> <tr> <td width=\"10\"> </td> <td><font color=\"#336699\" size=\"2\"><? echo($beskrivelse) ?></font></td> </tr> </table> </div> </td> </tr> <tr> <td height=\"99\" bgcolor=\"#FFFFFF\"> <div align=\"center\"><a href=\"#\"><img src=\"<? echo($billede_teaser) ?>\" width=\"90\" height=\"69\" onClick=\"MM_openBrWindow(\'billed.php?showimage=<? echo($billede_vare) ?>\',\'\',\'width=<? echo($x_size) ?>,height=<? echo($y_size) ?>\')\" alt=\"Klik for større billede\" border=\"0\"></a></div> </td> </tr> <tr> <td height=\"22\" bgcolor=\"#FFFFFF\"> <div align=\"center\" id=\"layerIEpris\"><b>Pris: 0.00<font size=\"2\" face=\"Verdana\"></font></b></div> </td> </tr> <tr> <td height=\"33\" bgcolor=\"#FFFFFF\"> <div align=\"center\"><b><font face=\"Verdana\" size=\"3\">Antal:</font><font face=\"Verdana\" size=\"2\"> <input type=\"text\" name=\"antal\" size=\"3\" value=\"1\" onkeyup=\"docalc(this.form)\"> </font></b></div> </td> </tr> <tr> <td height=\"1\" bgcolor=\"#FFFFFF\"></td> </tr> <tr> <td height=\"23\" bgcolor=\"#FFFFFF\"> <div align=\"center\" id=\"layerIEialt\"><b>I Alt: 0.00<font size=\"2\" face=\"Verdana\"></font></b></div> </td> </tr> <tr> <td height=\"1\" bgcolor=\"#FFFFFF\"></td> </tr> <tr> <td height=\"32\" bgcolor=\"#FFFFFF\"> <div align=\"center\"> <input type=\"button\" src=\"grafik/knap.jpg\" onclick=\"checkstuff(this.form)\" name=\"IMAGE\" width=\"57\" height=\"23\"> </div> </td> </tr> </table> </td> </tr> </table> <? include(\"bund.php\"); ?> </form> </div> </body> </html>
Nå Jacob.. jeg har lavet det på en anden måde (Siden reloader istedet) :o) 1000000 tak for hjælpen
Vi tilbyder markedets bedste kurser inden for webudvikling