Hamb: Zeichen löschen bei Formularübergabe

Hallo,

ich habe zwei Fragen bezüglich meines Skriptes – vermutlich ist es ganz einfach, ich komme trotzdem nicht darauf.

1)In meinem Menü gibt es die Möglichkeit über ein Miniformular eine Seitenzahl einzugeben, abzuschicken und rechts wird dann die angeforderte Seite angezeigt. Die Seiten haben Zahlen wie 14/2 oder 45/1. Nun soll die Zahl aber ohne „/“ übergeben werden, da die Anker auch keine „/“ haben, also 142 statt 14/2. Wie kann ich dieses Zeichen herauskürzen?

2)Außerdem soll nicht nur beim Drücken des Buttons das ganze abgeschickt werden, sondern auch beim Drücken der Eingabetaste. Das funktioniert auch soweit, gibt es da eine elegantere Lösung als onchange?

Vielen Dank!!!

function gehlosm()
{
eingegeben = document.seitenaufruf.seitenzahl.value;
window.open("text.html#" + eingegeben, "haupt")

if (document.seitenaufruf.seitenzahl.value == "")
  {
    alert("Bitte geben Sie zuerst eine Seitenzahl ein!");
    document.seitenaufruf.seitenzahl.focus();
    return false;
   }

if (document.seitenaufruf.seitenzahl.value.indexOf("/") != -1)
  {
    alert("Bitte geben Sie die Seitenzahl ohne / ein! Z. B. 145 statt 14/5 oder VIII2 statt VIII/2")
    document.seitenaufruf.seitenzahl.focus();
    return false;
   }
 }

HTML-Teil:

<form name="seitenaufruf" action="">
<input class="feld" type="text" name="seitenzahl" onchange="gehlosm();" />
<input class="button" type="button" value="Los!" onclick="gehlosm();" alt="Los!" />
</form>

  1. Hi,

    1)In meinem Menü gibt es die Möglichkeit über ein Miniformular eine Seitenzahl einzugeben, abzuschicken und rechts wird dann die angeforderte Seite angezeigt. Die Seiten haben Zahlen wie 14/2 oder 45/1. Nun soll die Zahl aber ohne „/“ übergeben werden, da die Anker auch keine „/“ haben, also 142 statt 14/2. Wie kann ich dieses Zeichen herauskürzen?

    Verwende replace().

    2)Außerdem soll nicht nur beim Drücken des Buttons das ganze abgeschickt werden, sondern auch beim Drücken der Eingabetaste. Das funktioniert auch soweit, gibt es da eine elegantere Lösung als onchange?

    Verwende onsubmit im Formular-Tag anstatt onclick im Input-Button.

    function gehlosm()
    {
    eingegeben = document.seitenaufruf.seitenzahl.value;

    Besser waere es, wenn du vor eingegeben noch var schreibst, dann erzeugst du eine lokale Variable anstatt einer globalen

    eingegeben = eingegeben.replace("/","");
    //Ersetzt einen "/" durch nichts

    window.open("text.html#" + eingegeben, "haupt")

    mfG,
    steckl

  2. Hello out there!

    142 statt 14/2. Wie kann ich dieses Zeichen herauskürzen?

    Bspw. mit http://de.selfhtml.org/javascript/objekte/string.htm#replace@title=replace(). Allerdings nicht sonderslich performant, für diese Lapalie einen regulären Ausdruck einzusetzen.

    Besser ist wohl, mit http://de.selfhtml.org/javascript/objekte/string.htm#last_index_of@title=lastIndexOf() die Position zu bestimmen und mit <http://de.selfhtml.org/javascript/objekte/string.htm#substring@title=substring() den Teil vor bzw. nach dem '/' zu ermitteln und diese zusammenzusetzen.

    2)Außerdem soll nicht nur beim Drücken des Buttons das ganze abgeschickt werden, sondern auch beim Drücken der Eingabetaste. Das funktioniert auch soweit, gibt es da eine elegantere Lösung als onchange?

    Ja, wenn der Button ein [ref:self812;html/formulare/formularbuttons.htm@title=Submit-Button> ist. Das besonders Elegante daran: Dann geht’s sogar ohne JavaScript. Nutzer ohne JavaScript werden’s dir danken. Dann müsste allerdings serverseitig von http://example.net/08/15 auf http://example.net/0815 umgeleitet werden.

    See ya up the road,
    Gunnar

    --
    „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)
  3. So funktioniert es wunderbar, danke!!!!

    function gehlosm()
    {
    var eingegeben = document.seitenaufruf.seitenzahl.value.replace("/","");

    window.open("maurer.html#" + eingegeben, "haupt")

    if (document.seitenaufruf.seitenzahl.value == "")
      {
        alert("Bitte geben Sie zuerst eine Seitenzahl ein!");
        document.seitenaufruf.seitenzahl.focus();
        return false;
       }
     }