Avatar billede doeleman Nybegynder
22. december 2000 - 10:55 Der er 8 kommentarer og
1 løsning

Tilføj option til selectbox

Jeg eksperimenterer lidt med at tilføje options dynamisk til en
select-box ved at indtaste nye værdier i en tekstbox.

Det virker godt nok, når det foregår på samme side, men når jeg
forsøger at indtaste værdierne i en tekstbox i et popup-vindue og
ændre selectboxen på den oprindelige side går det galt.

Et udklip af min java script:
Placeret i head:
<script language=\"Javascript\">;
function AddToOptionList(OptionList, OptionValue, OptionText) {
// Add option to the top of the list
OptionList[0] = new Option(OptionText, OptionValue);
OptionList[0].selected = true;
}
</script>;

Placeret i body:
<script>;AddToOptionList(opener.document.myForm.categories, \'123\',
\'test\');</script>;

Jeg får følgende fejl: \"Serveren producerede en undtagelse\".
Hvad betyder dette?


For at teste, at jeg har referencenavnene korrekte, har jeg
forsøgt følgende, som virker fint:
<script>;opener.document.myForm.name.value = \'Dette
virker\';</script>;
<script>;opener.document.myForm.categories[5].selected =
true;</script>;

Har jeg lavet en fejl, eller kan det slet ikke lade sig gøre?

Mvh. Christian
Avatar billede doeleman Nybegynder
22. december 2000 - 10:56 #1
Ved et uheldt kom der lige et par ekstra semikolonner med. Der skal selvfølgelig ikke være semikolon efter <script> og </script>.
Avatar billede doeleman Nybegynder
22. december 2000 - 10:56 #2
Ved et uheldt kom der lige et par ekstra semikolonner med. Der skal selvfølgelig ikke være semikolon efter <script> og </script>.
Avatar billede erikjacobsen Ekspert
22. december 2000 - 12:13 #3
Jeg kan ikke gennemskue fejlmeddelelsen, men det burde kunne lade sig gøre.
Omend du får overskrevet første indgang i select-boxen, ikke tilføjet, men det
er en helt anden sag.

Så: mere kode!!  Så kan jeg selv lige teste det og smide et par testudskrifter ind.
Avatar billede doeleman Nybegynder
22. december 2000 - 13:17 #4
Jeg er med på, at den første option bliver overskrevet, men den er alligevel blank, så det er bevidst gjort.

Jeg smider lige noget mere kode. Jeg har klippet en del i det, så det ikke bliver for uoverskueligt, men håber du stadig kan se ideen i det.

********** Filen add.php **********
<html>
<head>
  <title>Tilføj varer til kataloget</title>
  <script type=\"text/javascript\" language=\"JavaScript1.1\" src=\"js/pop.js\" charset=\"ISO-8859-1\"></script>
</head>

<body>

<h3>Tilføj vare</h3>

<form name=\"myForm\" action=\"add.php\" method=\"post\" enctype=\"multipart/form-data\">
<table width=\"80%\" align=\"center\">
<tr>
  <td>Navn</td>
  <td width=\"200\"><input type=\"text\" name=\"name\"></td>
  <td width=\"200\">&nbsp;</td>
</tr>
<tr>
  <td>Kategori</td>
  <td>
    <select name=\"categories\" size=\"1\">
    <option></option>
    <option value=\"008\">Bookcases</option>
    <option value=\"004\">Cabinets</option>
    <option value=\"009\">Ceramics</option>
    <option value=\"001\">Chairs</option>
    <option value=\"006\">Easy Chairs</option>
    <option value=\"005\">Lamps</option>
    <option value=\"007\">Sidetables</option>
    </select>
  </td>
  <td><input type=\"button\" onClick=\"java script:pop(\'newOption.php?table=categories\',\'pop\',50,300);\" value=\"Tilføj\"></td>
</tr>
<tr>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td><input type=\"submit\" name=\"add\" value=\"Tilføj\"></td>
</tr>
</table>
</form>

</body>
</html>

********** Filen newOption.php **********
<html>
<head>
  <title>Tilføj ny kategori</title>
 
  <script language=\"Javascript\">
  <!--
 
  function AddToOptionList(OptionList, OptionValue, OptionText) {
    // Add option to the top of the list
    OptionList[0] = new Option(OptionText, OptionValue);
    OptionList[0].selected = true;
  }
 
  // -->
  </script>
</head>

<body>

<h1>Tilføj ny kategori</h1>

<form action=\"newOption.php\" method=\"post\">
<input type=\"text\" name=\"name\">
<input type=\"hidden\" name=\"table\" value=\"categories\">
<input type=\"submit\" value=\"Tilføj\">
</form>


<script>
<!--
  // Følgende linie bliver genereret af PHP når formularen bliver sendt
  AddToOptionList(opener.document.myForm.categories, \'123\', \'test\');
// -->
</script>

</body>
</html>
Avatar billede erikjacobsen Ekspert
22. december 2000 - 13:41 #5
Den er sjov.... jeg omdøbte dem lige til .htm - og ja, der er godt nok
en sjov fejl. Hæng på mens jeg leger...
Avatar billede doeleman Nybegynder
22. december 2000 - 13:49 #6
Godt at se dig tilbage Erik ! :-)
Har du ikke været væk fra Eksperten en tid ?
Avatar billede erikjacobsen Ekspert
22. december 2000 - 13:52 #7
Nej, det har jeg nu ikke. Jeg ved ikke helt hvorfor, men prøv lige:

  function AddToOptionList(OptionList, OptionValue, OptionText) {
      // Add option to the top of the list
      OptionList[0].text = OptionText;
      OptionList[0].value = OptionValue;
      OptionList[0].selected = true;
  }

Det er ikke helt det jeg lavede, men det burde være ok. Jeg undres stadig
over hvad der skete....
Avatar billede doeleman Nybegynder
22. december 2000 - 14:15 #8
Det virker!! Julefreden er reddet.

Jeg synes egentligt at det er meget logisk nu. Der er jo netop ikke tale om en \"new Option()\", men blot om ændrede værdier.

Tusind tak for hjælpen.
Avatar billede erikjacobsen Ekspert
22. december 2000 - 14:17 #9
Jaaah, det er jo godt du synes at det er logisk. Men hvis det var \"rigtige\"
referencer mellem objekter, burde man kunne lave sådan en udskiftning.
Men nyd freden .... ;-)
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