chris: hidden-value mit Funktion fuellen

Hallo

Mein Problem ist etwas kompliziert, aber vielleicht schnallt das daoch jemand.
Also, ich habe ein Seite, die fuelle ich dynamisch aus einer DB (mache ich mit
ASP). Nun muss ich auf eine andere Seite wechseln. Dazu habe ich ein Formular
mit zwei Button. Das Problem ist nun, dass ich beim Wechseln Variablen uebergeben
muss. Leider ist die Anzahl der Variablen auch dynamisch.
Jetzt habe ich eine Funktion gebastelt, die alle Variablen in einen String packt,
leider klappts mit dem uebergeben nicht.

ich habs so versucht:
Im Formular habe ich:

<form name="karte"  action="Navigation_s.asp"  method = post>
<input type="hidden" name="cNav" value="javascript:kartenart()">

und die Funktion:
function kartenart(){
  var ka = new Array();
  var kastring = "";
  for(i=0;i<document.Navigation.Karte.length;++i){
   if(document.Navigation.Karte.options[i].selected == true){
  ka[i] = document.Navigation.Karte.options[i].value;
   }
  }
  for(i=0;i<ka.length;++i){
   kastring = kastring + "&" + ka[i];
  }
return kastring;
}

der String, der ankommt, hat dann folgendes drin:
 ankommString = javascript:kartenart()

Kann mir bitte jemand sagen, was falsch ist. Oder wie ich's sonst hinkriege.

Dank&Gruss
Chris

  1. Hi,

    <input type="hidden" name="cNav" value="javascript:kartenart()">

    ein Eingabefeld-value enthält keine URL.

    Kann mir bitte jemand sagen, was falsch ist. Oder wie ich's sonst hinkriege.

    Irgendwo musst Du JavaScript-Code _ausführen_, um auf den value zuzugreifen und ihn zu setzen. That's it.

    Cheatah

    --
    X-Will-Answer-Email: No
    1. danke, ich bin dabei, aber ich kriegs trotzdem nicht hin.

      jetzt habe ich den Aufruf der Funktion in die action des Formulars getan:
      <form name="karte"  action="javascript:kartenart()"  method = post>

      und in der Funktion rufe ich nun die andere Seite auf:
      window.location.href = "Navigation_s.asp" + kastring;

      aber dann heisst es immer, dass die Seite nicht gefunden wird.

      was ist denn nun noch falsch?

      dank&gruss
      Chris

      1. danke, ich bin dabei, aber ich kriegs trotzdem nicht hin.

        jetzt habe ich den Aufruf der Funktion in die action des Formulars getan:
        <form name="karte"  action="javascript:kartenart()"  method = post>

        Das Sprunglabel 'javascript:' ist hier absolut unnötig und führt in Browsern, die noch keine Labels kennen zu JS Fehlern.

        und in der Funktion rufe ich nun die andere Seite auf:
        window.location.href = "Navigation_s.asp" + kastring;

        aber dann heisst es immer, dass die Seite nicht gefunden wird.

        was ist denn nun noch falsch?

        Die URL existiert nicht.

        Nur mal ein  Tipp:
        Falls irgendwas nicht funktioniert, egal in welcher Programmiersprache, bietet sich an einen Debugmodus einzuführen, oder wenbigstens Variabelninhalte zur Laufzeit zu kontrollieren. Das ist völlig normal und niemand schämt sich dafür. Warum tust du das nicht?

        Bevor du die URL setzt, könntest du sie dir z.b. mit einem alert anzeigen lassen:
        alert('die URL lautet:' + "Navigation_s.asp" + kastring);

        window.location.href = "Navigation_s.asp" + kastring;

        Struppi.

  2. hi

    <input type="hidden" name="cNav" value="javascript:kartenart()">

    Aha, Du glaubst, dass das Script so  ausgefuehrt wird, wenn Du Form absendest? So bekommst Du lediglich einen String "javascript:kartenart()"

    also, es gibt einen event onsubmit:

    <form name="karte" action="Navigation_s.asp"  method="post" onsubmit="return kartenart()">

    function kartenart(){{
      ...
      ...
      ...
      ... {
        ka[i] = document.Navigation.Karte.options[i].value;
      }

    document.Navigation.cNav.value =  ka.join();
      return true;
    }

    Du rufst bei Submit Deine Funktion, wertest die Eingabe aus, fuellst Deinen Array als Kommaseparierten String in den hidden Input, und gibst true zurueck: Formular wird versendet.

    Gruesse  Joachim