Wie kann ich das Formular über JavaScript zurücksetzen (löschen)?


123

Ich habe es versucht, $("#client.frm").reset();aber es funktioniert nicht. Wie kann ich das Formular über jQuery zurücksetzen?



6
Hinweis: Löschen und Zurücksetzen sind zwei verschiedene Dinge. Reset ( .reset()) setzt die Werte auf die ursprünglichen Werte im HTML zurück. Siehe hierzu die Lösung von Nick Craver weiter unten. "Löschen" bedeutet normalerweise, dass die Werte wieder auf leer / nicht markiert / nicht ausgewählt gesetzt werden. siehe MahmoudS-Lösung.
Luke

Antworten:


258

form.reset() ist eine DOM-Elementmethode (keine im jQuery-Objekt), daher benötigen Sie:

$("#client.frm")[0].reset();
//faster version:
$("#client")[0].reset();

Oder ohne jQuery:

document.getElementById("client").reset();

4
Mein Gehirn hat sich gerade erweitert, danke: "Ein jQuery-Objekt ist ein Array-ähnlicher Wrapper um ein oder mehrere DOM-Elemente. Um einen Verweis auf die tatsächlichen DOM-Elemente (anstelle des jQuery-Objekts) zu erhalten, haben Sie zwei Optionen. Das erste (und Die schnellste Methode ist die Verwendung der Array-Notation: $ ("#foo") [0]; // Entspricht document.getElementById ("foo") Die zweite Methode ist die Verwendung der Funktion .get (): $ ("#foo ") .get (0); // Identisch mit oben, nur langsamer." learn.jquery.com/using-jquery-core/faq/…
Andrew

Ich erhalte den nächsten Fehler: TypeError: document.getElementById (...). Reset ist keine Funktion [Weitere Informationen]. Ich benutze das FormValidate-Plugin für das Formular. seine resetForm setzt Form auch nicht zurück = (Irgendwelche Vorschläge?
Eugen Konkov

Eugen, hier müssen Sie, ähnlich wie bei Indiana Jones und The Last Crusade, einen Vertrauenssprung machen. Wenn Sie document.getElementById ('myform'). Reset () aufrufen, wird das Formular tatsächlich gelöscht, obwohl diese Methode anscheinend nicht vorhanden ist. Typische M $ -Unterdeckung.
Newclique


17

Die reine JS-Lösung lautet wie folgt:

function clearForm(myFormElement) {

  var elements = myFormElement.elements;

  myFormElement.reset();

  for(i=0; i<elements.length; i++) {

  field_type = elements[i].type.toLowerCase();

  switch(field_type) {

    case "text":
    case "password":
    case "textarea":
          case "hidden":

      elements[i].value = "";
      break;

    case "radio":
    case "checkbox":
        if (elements[i].checked) {
          elements[i].checked = false;
      }
      break;

    case "select-one":
    case "select-multi":
                elements[i].selectedIndex = -1;
      break;

    default:
      break;
  }
    }
}

1
Hier ist die jQuery-Plugin-Lösung, die ungefähr gleichwertig sein sollte. stackoverflow.com/a/24496012/1766230 (Ich habe Ihren selectedIndex = -1Trick benutzt.)
Luke

5
Diese Lösung funktioniert jetzt nicht (im Jahr 2016). Wenn das Formular Standardwerte für Text-, Kennwort- und Textbereichseingaben hat, sollten Sie anstelle von elements [i] .value = "" die Elemente [i] .defaultValue = "" verwenden.
Andrew F.

var field_type = elements[i].type.toLowerCase();
Martynas Januškauskas

@ Andrew: Es kommt darauf an, was du willst. Wenn Sie das Formular nur auf defaultValues zurücksetzen möchten , können Sie einfach reset()das Formularobjekt aufrufen . Der Code hier dient dazu , das Formular zu löschen , anstatt es zurückzusetzen.
Beschützer ein


4

Formular zurücksetzen (löschen) durch Javascript& jQuery:

Beispiel Javascript:

document.getElementById("client").reset();

Beispiel jQuery:

Sie können versuchen, den trigger() Referenzlink zu verwenden

$('#client.frm').trigger("reset");

4

Beachten Sie, dass die Funktion form.reset()nicht funktioniert, wenn ein Eingabe-Tag im Formular ein Attribut hatname='reset'


2

Versuche dies :

$('#resetBtn').on('click', function(e){
    e.preventDefault();
    $("#myform")[0].reset.click();
}

2

Löschen Sie das Formular wie folgt

document.forms[0].reset();

Sie können einfach die Formularelemente innerhalb der Gruppe löschen. indem Sie dies verwenden forms[0].


1

Verwenden Sie die JavaScript-Funktion reset():

document.forms["frm_id"].reset();


0

Versuchen Sie diesen Code. Eine Komplettlösung für Ihre Antwort.

    <!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $(":reset").css("background-color", "red");
});
</script>
</head>
<body>

<form action="">
  Name: <input type="text" name="user"><br>
  Password: <input type="password" name="password"><br>
  <button type="button">Useless Button</button>
  <input type="button" value="Another useless button"><br>
  <input type="reset" value="Reset">
  <input type="submit" value="Submit"><br>
</form>

</body>
</html>

-1

Sie können das gesamte Formular mit der Funktion onclick löschen. Hier ist der Code dafür.

 <button type="reset" value="reset" type="reset" class="btnreset" onclick="window.location.reload()">Reset</button>

Die Funktion window.location.reload () aktualisiert Ihre Seite und alle Daten werden gelöscht.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.