it-swarm.com.de

Ändern Sie den Wert der Eingabe und senden Sie das Formular in JavaScript

Ich arbeite gerade an einer Grundform. Was ich mit diesem Formular machen möchte, ist, dass Sie, wenn Sie auf Submit/Button klicken, zuerst den Wert eines Feldes ändern und dann das Formular wie gewohnt abschicken. Es sieht alles ein bisschen so aus:

<form name="myform" id="myform" action="action.php">
<input type="hidden" name="myinput" value="0" />
<input type="text" name="message" value="" />
<input type="submit" name="submit" onclick="DoSubmit()" />
</form>

Und so weit bin ich mit dem JavaScript gekommen. Der Wert von "myinput" wird auf 1 geändert, das Formular wird jedoch nicht gesendet. Ich bin wirklich ein JavaScript-Neuling, also verzeihen Sie mir, wenn dies nur eine zu einfache Frage ist, aber ich verstehe es einfach nicht wirklich.

function DoSubmit(){
  document.myform.myinput.value = '1';
  document.getElementById("myform").submit();
}
42
Paparappa

Sie könnten stattdessen so etwas tun:

<form name="myform" action="action.php" onsubmit="DoSubmit();">
<input type="hidden" name="myinput" value="0" />
<input type="text" name="message" value="" />
<input type="submit" name="submit" />
</form>

Ändern Sie anschließend Ihre DoSubmit-Funktion so, dass sie nur "true" zurückgibt und angibt, dass "OK, jetzt können Sie das Formular senden" an den Browser:

function DoSubmit(){
  document.myform.myinput.value = '1';
  return true;
}

BEARBEITEN: Ich würde auch vorsichtig sein, wenn Sie auf eine Schaltfläche zum Senden klicken. Die Reihenfolge der Ereignisse ist nicht sofort ersichtlich, und Ihr Rückruf wird nicht aufgerufen, wenn der Benutzer beispielsweise die Rückruftaste in einem Textfeld drückt.

57
valderman
document.getElementById("myform").submit();

Dies funktioniert nicht, da Ihr Formular-Tag keine ID hat.

Ändern Sie es so und es sollte funktionieren:

<form name="myform" id="myform" action="action.php">
6

Nein. Wenn Ihr Eingabetyp "Submit" ist, sollte im Markup ein onsubmit -Ereignis deklariert sein, und Sie müssen dann die gewünschten Änderungen vornehmen. Das heißt, Sie haben ein onsubmit in Ihrem Formular-Tag definiert.

Ändern Sie andernfalls den Eingabetyp in eine Schaltfläche und definieren Sie dann ein onclick -Ereignis für diese Schaltfläche.

hier ist ein einfacher Code. Sie müssen eine ID für Ihre Eingabe festlegen. Nennen Sie sie 'myInput':

      var myform = document.getElementById('myform');
      myform.onsubmit = function(){ 
                    document.getElementById('myInput').value = '1';
                    myform.submit();
                  };
5
Said Marar

Sie versuchen, auf ein Element zuzugreifen, das auf dem Attribut name basiert, das für Postbacks auf dem Server funktioniert, aber Javascript reagiert auf das Attribut id. Fügen Sie ein id mit demselben Wert wie name hinzu, und alle sollten problemlos funktionieren.

<form name="myform" id="myform" action="action.php">
  <input type="hidden" name="myinput" id="myinput" value="0" />
  <input type="text" name="message" id="message" value="" />
  <input type="submit" name="submit" id="submit" onclick="DoSubmit()" />
</form>

function DoSubmit(){
  document.getElementById("myinput").value = '1';
  return true;
}
2
Chris Snowden

Mein Problem stellte sich heraus, dass ich als document.getElementById("myinput").Value = '1';

Beachten Sie das Kapital V im Wert? Sobald ich es zu kleinem Fall dh ändere; value, die Daten wurden veröffentlicht. Seltsam, da es auch keine Javascript-Fehler gab

1
Dinesh Rajan

Können Sie onchange Event verwenden?

<form name="myform" id="myform" action="action.php">
<input type="hidden" name="myinput" value="0" onchange="this.form.submit()"/>
<input type="text" name="message" value="" />
<input type="submit" name="submit" onclick="DoSubmit()" />
</form>
0
iCrazybest

Das könnte dir helfen.

Dein HTML

<form id="myform" action="action.php">
<input type="hidden" name="myinput" value="0" />
<input type="text" name="message" value="" />
<input type="submit" name="submit" onclick="save()" />
</form>

IHR SCHRIFT

    <script>
        function save(){
            $('#myinput').val('1');
            $('#form').submit();
        }
    </script>
0
Saif Zakir