Zurücksetzen eines mehrstufigen Formulars mit jQuery

349

Ich habe ein Formular mit einer Standard-Reset-Taste, die folgendermaßen codiert ist:

<input type="reset" class="button standard" value="Clear" />

Das Problem ist, dass das Formular mehrstufig ist. Wenn also ein Benutzer eine Phase ausfüllt und später zurückkehrt, werden die gespeicherten Werte für die verschiedenen Felder nicht zurückgesetzt, wenn auf die Schaltfläche Löschen geklickt wird.

Ich denke, dass das Anhängen einer jQuery-Funktion, um alle Felder zu durchlaufen und sie 'manuell' zu löschen, den Trick tun würde. Ich verwende jQuery bereits im Formular, bin aber gerade erst auf dem neuesten Stand und bin mir daher nicht sicher, wie ich vorgehen soll, außer jedes Feld einzeln nach ID zu referenzieren, was nicht sehr effizient zu sein scheint.

TIA für jede Hilfe.

da5id
quelle
1
@ da5id: Etwas zu beachten ist, dass mein Akzeptiertes auch versteckte Elemente leert! Sie möchten dies wahrscheinlich nicht, also fügen Sie einfach hinzu: versteckt zu, not()wenn Ihr Formular versteckte Eingaben enthält.
Paolo Bergantino
Danke Paulo, sehr guter Punkt, den ich berücksichtigen werde.
da5id
2
Seien Sie vorsichtig, wenn Sie nach einer guten Antwort suchen. Die akzeptierte Antwort ist auf dem richtigen Weg, weist jedoch Fehler auf. Die am häufigsten gewählte Antwort verstand die Frage bis jetzt nicht. Viele andere Antworten wurden ebenfalls missverstanden und beim Zurücksetzen mit leer / klar verwechselt .
1
Mystkines Recht - Sowohl die Frage als auch die derzeit akzeptierte Antwort verbinden das Löschen mit dem Zurücksetzen. Ich denke, der Fragesteller suchte wirklich nach einer mehrstufigen Lösung zum Zurücksetzen von Formularen, trotz des ursprünglichen Titels. Ich habe den Titel entsprechend aktualisiert.
Yarin
hep hep, trotz des Alters dieser Frage habe ich eine neue Antwort hinzugefügt, die tatsächlich beliebige Teile eines Formulars zurücksetzt ... stackoverflow.com/questions/680241/…
kritzikratzi

Antworten:

502

aktualisiert im März 2012.

Zwei Jahre, nachdem ich diese Frage ursprünglich beantwortet hatte, komme ich zurück und stelle fest, dass sie sich zu einem großen Durcheinander entwickelt hat. Ich denke, es ist an der Zeit, darauf zurückzukommen und meine Antwort wirklich richtig zu machen, da sie am besten bewertet und akzeptiert wird.

Für die Aufzeichnung ist Titis Antwort falsch, da es nicht das ist, wonach das Originalplakat gefragt hat - es ist richtig, dass es möglich ist, ein Formular mit der nativen Methode reset () zurückzusetzen, aber diese Frage versucht, ein Formular aus dem gespeicherten zu entfernen Werte, die im Formular verbleiben würden, wenn Sie es auf diese Weise zurücksetzen. Aus diesem Grund ist ein "manueller" Reset erforderlich. Ich gehe davon aus, dass die meisten Leute in dieser Frage von einer Google-Suche gelandet sind und wirklich nach der reset () -Methode suchen, aber sie funktioniert nicht für den speziellen Fall, über den das OP spricht.

Meine ursprüngliche Antwort war:

// not correct, use answer below
$(':input','#myform')
.not(':button, :submit, :reset, :hidden')
.val('')
.removeAttr('checked')
.removeAttr('selected');

Dies funktioniert möglicherweise in vielen Fällen, einschließlich des OP, aber wie in den Kommentaren und in anderen Antworten ausgeführt, werden Radio- / Kontrollkästchenelemente aus allen Wertattributen entfernt.

Eine korrektere Antwort (aber nicht perfekt) lautet:

function resetForm($form) {
    $form.find('input:text, input:password, input:file, select, textarea').val('');
    $form.find('input:radio, input:checkbox')
         .removeAttr('checked').removeAttr('selected');
}

// to call, use:
resetForm($('#myform')); // by id, recommended
resetForm($('form[name=myName]')); // by name

Mit den :text, :radiousw. Wählern selbst ist schlechte Praxis von jQuery betrachtet , da sie die Bewertung am Ende zu , *:textdie es viel länger dauern , als es sollte macht. Ich bevorzuge den Whitelist-Ansatz und wünschte, ich hätte ihn in meiner ursprünglichen Antwort verwendet. Wenn Sie jedoch den inputTeil des Selektors sowie den Cache des Formularelements angeben, sollte dies die Antwort mit der besten Leistung sein.

Diese Antwort weist möglicherweise noch einige Mängel auf, wenn die Standardeinstellung für ausgewählte Elemente keine Option mit einem leeren Wert ist. Sie ist jedoch mit Sicherheit so allgemein wie möglich und muss von Fall zu Fall behandelt werden .

Paolo Bergantino
quelle
2
Das: Eingabe ist praktisch ... jetzt weiß ich, dass ich verwenden werde. Danke Paolo :) +1
Alex
Sehr nett, Prost, aber wird dies auch die Werte meiner Knöpfe löschen? Kann erst später testen.
da5id
1
An dieser Stelle denke ich, dass es besser ist, nur diejenigen aufzulisten, die Sie leeren möchten, also anstelle von: Eingabe in die erste Zeile, die Sie tun ": text ,: select ,: radio ,: checkbox"
Paolo Bergantino
3
Ein Problem hierbei ist, dass .val('')alle Werte auf zurückgesetzt werden, ''auch wenn diese Werte in Optionsfeldern und Kontrollkästchen verwendet werden. Wenn ich also den obigen Code ausführe, verliere ich wertvolle Informationen aus dem Formular, nicht nur was der Benutzer eingegeben hat.
jeffery_the_wind
3
Es scheint ein kleines Problem mit dieser Lösung zu geben - die Eingabe: E-Mail - es gibt einen Fehler zurück: Fehler: Syntaxfehler, nicht erkannter Ausdruck: nicht unterstütztes Pseudo: E-Mail
Spencer Mark
390

Von http://groups.google.com/group/jquery-dev/msg/2e0b7435a864beea :

$('#myform')[0].reset();

Die Einstellung myinput.val('')emuliert möglicherweise nicht 100% "Zurücksetzen", wenn Sie eine Eingabe wie diese haben:

<input name="percent" value="50"/>

Wenn Sie beispielsweise myinput.val('')eine Eingabe mit einem Standardwert von 50 aufrufen, wird diese auf eine leere Zeichenfolge gesetzt, während beim Aufrufen myform.reset()die Eingabe auf den Anfangswert von 50 zurückgesetzt wird.

Titi Wangsa bin Damhore
quelle
4
Vielen Dank, dies ist eine großartige Möglichkeit, ein Formular zu löschen, das Folgendes enthält: input type = "file".
Neoneye
27
Ich denke, 34 Leute haben die Frage hier falsch verstanden. Der Fragesteller kennt das Zurücksetzen, das Formular wird auf die Werte "zurückgesetzt", an die sich sein Skript erinnert, und er muss erzwingen, dass sie ausgeblendet werden.
Paolo Bergantino
48

Es gibt ein großes Problem mit Paolos akzeptierter Antwort. Erwägen:

$(':input','#myform')
 .not(':button, :submit, :reset, :hidden')
 .val('')
 .removeAttr('checked')
 .removeAttr('selected');

In der .val('')Zeile werden auch alle valueKontrollkästchen und Optionsfelder gelöscht. Also, wenn Sie (wie ich) so etwas tun:

<input type="checkbox" name="list[]" value="one" />
<input type="checkbox" name="list[]" value="two" checked="checked" />
<input type="checkbox" name="list[]" value="three" />

Wenn Sie die akzeptierte Antwort verwenden, werden Ihre Eingaben wie folgt umgewandelt:

<input type="checkbox" name="list[]" value="" />
<input type="checkbox" name="list[]" value="" />
<input type="checkbox" name="list[]" value="" />

Ups - ich habe diesen Wert verwendet!

Hier ist eine modifizierte Version, die Ihre Kontrollkästchen- und Funkwerte beibehält:

// Use a whitelist of fields to minimize unintended side effects.
$('INPUT:text, INPUT:password, INPUT:file, SELECT, TEXTAREA', '#myFormId').val('');  
// De-select any checkboxes, radios and drop-down menus
$('INPUT:checkbox, INPUT:radio', '#myFormId').removeAttr('checked').removeAttr('selected');
Leepowers
quelle
1
Aus irgendeinem Grund funktioniert dies bei selectElementen nicht. Kannst du das reparieren?
Pentium10
2
$ (': Eingabe ,: Auswahl', '#myFormId'). removeAttr ('markiert'). removeAttr ('ausgewählt'); sollte funktionieren
sakhunzai
Das ist die richtige Antwort. Wenn Sie die akzeptierte Antwort verwenden, wird das Formular nach dem Absenden gelöscht. Wenn Sie das Formular jedoch erneut senden möchten, werden keine Ihrer Kontrollkästchen- oder Optionsfelddaten erfasst, da Ihre Wertattribute gelöscht werden.
djblue2009
Ich habe meine Antwort aktualisiert alle an diese Adresse, liegt bei Ihnen meist korrekt abgesehen von der Tatsache jQuery rät dringend die Verwendung :text, :passwordusw. Wähler für sich , ohne die Angabe inputTeil, sonst ist es zu auswertet *:textdem durchläuft jedes Element in dem Dokument , anstatt nur <input>Tags mitinput:text
Paolo Bergantino
@ paolo-bergantino Deine Kritik ist falsch. Meine Beispiele , die Elemente sind Scoping mit dem inspizieren #myFormIdKontext als zweites Argument übergeben $()- das ist $(':input', '#context')- das ist identisch$('#context').filter(':input')
leepowers
16

jQuery Plugin

Ich habe ein jQuery-Plugin erstellt, damit ich es problemlos überall dort verwenden kann, wo ich es brauche:

jQuery.fn.clear = function()
{
    var $form = $(this);

    $form.find('input:text, input:password, input:file, textarea').val('');
    $form.find('select option:selected').removeAttr('selected');
    $form.find('input:checkbox, input:radio').removeAttr('checked');

    return this;
}; 

Jetzt kann ich es verwenden, indem ich anrufe:

$('#my-form').clear();
Francis Lewis
quelle
1
Diese Antwort ist die beste IMO. Sollte es auch enthalten .prop("checked", false)? stackoverflow.com/questions/5874652/prop-vs-attr
Luke
14

Das Löschen von Formularen ist etwas schwierig und nicht so einfach, wie es aussieht.

Schlagen Sie vor, dass Sie das jQuery-Formular-Plugin verwenden und dessen ClearForm- oder ResetForm- Funktionalität verwenden. Es kümmert sich um die meisten Eckfälle.

Cherian
quelle
$ ('# form_id'). clearForm (); ist genau das, was ich brauchte - danke! "Löscht die Formularelemente. Diese Methode leert alle Texteingaben, Passworteingaben und Textbereichselemente, löscht die Auswahl in ausgewählten Elementen und deaktiviert alle Radio- und Kontrollkästcheneingaben." (resetForm hingegen "Setzt das Formular durch Aufrufen der nativen DOM-Methode des Formularelements auf seinen ursprünglichen Zustand zurück.")
Tyler Rick
14

document.getElementById ('frm'). reset ()

etw
quelle
11
Wenn Sie ein Fan von jQuery sind, könnte dies umgeschrieben werden in: $ ('frm') [0] .reset ()
dmitko
8
@dmitko Schauen Sie sich einfach den Benutzernamen des Posters an
Philipp M
1
Dies ist zwar eine gute Lösung zum Zurücksetzen eines Formulars, aber nicht die Lösung für die gestellte Frage.
Luke
13

Normalerweise mache ich:

$('#formDiv form').get(0).reset()

oder

$('#formId').get(0).reset()
Ricardo Bin
quelle
5

Hier ist etwas, um Ihnen den Einstieg zu erleichtern

$('form') // match your correct form 
.find('input[type!=submit], input[type!=reset]') // don't reset submit or reset
.val(''); // set their value to blank

Wenn Sie Kontrollkästchen / Optionsfelder haben, müssen Sie diese natürlich ändern, um sie ebenfalls einzuschließen und festzulegen .attr({'checked': false});

bearbeiten Paolo Antwort ist prägnanter. Meine Antwort ist wortreicher, weil ich weder über den :inputSelektor Bescheid wusste noch daran dachte, das überprüfte Attribut einfach zu entfernen.

Alex
quelle
5

Erwägen Sie die Verwendung des Validierungs-Plugins - es ist großartig! Das Zurücksetzen des Formulars ist einfach:

var validator = $("#myform").validate();
validator.resetForm();
dmitko
quelle
4

Ich finde das funktioniert gut.

$(":input").not(":button, :submit, :reset, :hidden").each( function() {
    this.value = this.defaultValue;     
});
DampeS8N
quelle
außer dass es nicht für Kontrollkästchen, Optionsfelder und Auswahlmöglichkeiten funktioniert.
kritzikratzi
4

Grundsätzlich macht mich keine der angebotenen Lösungen glücklich. Wie einige Leute betonten, leeren sie das Formular, anstatt es zurückzusetzen.

Es gibt jedoch einige Javascript-Eigenschaften, die helfen:

  • defaultValue für Textfelder
  • defaultChecked für Kontrollkästchen und Optionsfelder
  • defaultSelected für Auswahloptionen

Diese speichern den Wert, den ein Feld beim Laden der Seite hatte.

Das Schreiben eines jQuery-Plugins ist jetzt trivial: (für Ungeduldige ... hier ist eine Demo http://jsfiddle.net/kritzikratzi/N8fEF/1/ )

Plugin-Code

(function( $ ){
    $.fn.resetValue = function() {  
        return this.each(function() {
            var $this = $(this); 
            var node = this.nodeName.toLowerCase(); 
            var type = $this.attr( "type" ); 

            if( node == "input" && ( type == "text" || type == "password" ) ){
                this.value = this.defaultValue; 
            }
            else if( node == "input" && ( type == "radio" || type == "checkbox" ) ){
                this.checked = this.defaultChecked; 
            }
            else if( node == "input" && ( type == "button" || type == "submit" || type="reset" ) ){ 
                // we really don't care 
            }
            else if( node == "select" ){
                this.selectedIndex = $this.find( "option" ).filter( function(){
                    return this.defaultSelected == true; 
                } ).index();
            }
            else if( node == "textarea" ){
                this.value = this.defaultValue; 
            }
            // not good... unknown element, guess around
            else if( this.hasOwnProperty( "defaultValue" ) ){
                this.value = this.defaultValue; 
            }
            else{
                // panic! must be some html5 crazyness
            }
        });
    }
} )(jQuery);

Verwendungszweck

// reset a bunch of fields
$( "#input1, #input2, #select1" ).resetValue(); 

// reset a group of radio buttons
$( "input[name=myRadioGroup]" ).resetValue(); 

// reset all fields in a certain container
$( "#someContainer :input" ).resetValue(); 

// reset all fields
$( ":input" ).resetValue(); 

// note that resetting all fields is better with the javascript-builtin command: 
$( "#myForm" ).get(0).reset(); 

einige Notizen ...

  • Ich habe mich nicht mit den neuen HTML5-Formularelementen befasst. Einige müssen möglicherweise speziell behandelt werden, aber die gleiche Idee sollte funktionieren.
  • Elemente müssen direkt referenziert werden. dh $( "#container" ).resetValue()wird nicht funktionieren. Verwenden Sie $( "#container :input" )stattdessen immer .
  • Wie oben erwähnt, ist hier eine Demo: http://jsfiddle.net/kritzikratzi/N8fEF/1/
kritzikratzi
quelle
4

Möglicherweise ist dies ohne jQuery einfacher zu lösen.

In normalem JavaScript ist dies so einfach wie:

document.getElementById('frmitem').reset();

Ich versuche mich immer daran zu erinnern, dass wir jQuery zwar verwenden, um unsere Codierung zu verbessern und zu beschleunigen, es aber manchmal nicht wirklich schneller ist. In diesen Fällen ist es oft besser, eine andere Methode zu verwenden.

Ken Le
quelle
4

Ich habe eine kleine Variation von Francis Lewis 'netter Lösung gemacht . Was seine Lösung nicht tut, ist, die Dropdown-Auswahl auf leer zu setzen. (Ich denke, wenn die meisten Leute "löschen" wollen, wollen sie wahrscheinlich alle Werte leer machen.) Dieser macht es mit .find('select').prop("selectedIndex", -1).

$.fn.clear = function()
{
    $(this).find('input')
            .filter(':text, :password, :file').val('')
            .end()
            .filter(':checkbox, :radio')
                .removeAttr('checked')
            .end()
        .end()
    .find('textarea').val('')
        .end()
    .find('select').prop("selectedIndex", -1)
        .find('option:selected').removeAttr('selected')
    ;
    return this;
};
Luke
quelle
2

Normalerweise füge ich dem Formular eine versteckte Schaltfläche zum Zurücksetzen hinzu. bei Bedarf nur: $ ('# reset'). click ();

Alberto Nunes
quelle
1
Warum beantwortest du einen Beitrag, der vor über 2 Jahren beantwortet und genehmigt wurde? Und einschließlich dessen ist Ihr Beitrag auch von geringer Qualität
Rene Pot
Dies ist viel dunkler als nur das direkte Aufrufen von form.reset (). Es besteht keine Notwendigkeit für diesen Hack.
kritzikratzi
2

Änderung der am häufigsten gewählten Antwort für die $(document).ready()Situation:

$('button[type="reset"]').click(function(e) {
    $form = $(this.form);
    $form.find('input:text, input:password, input:file, select, textarea').val('');
    $form.find('input:radio, input:checkbox').removeAttr('checked').removeAttr('selected');
    e.preventDefault();
});
Slawa
quelle
2

Verwenden Sie einfach das Gleiche jQuery Trigger eventwie folgt:

$('form').trigger("reset");

Dadurch werden Kontrollkästchen, Radiobuttons, Textfelder usw. zurückgesetzt. Im Wesentlichen wird Ihr Formular in den Standardzustand versetzt. Setzen Sie einfach das #ID, Class, elementInnere des jQuerySelektors ein.

James111
quelle
1

Das hat bei mir funktioniert. Die Pyrotex-Antwort hat die Auswahlfelder nicht zurückgesetzt und seine hier übernommen. Meine Bearbeitung:

// Use a whitelist of fields to minimize unintended side effects.
$(':text, :password, :file', '#myFormId').val('');  
// De-select any checkboxes, radios and drop-down menus
$(':input,select option', '#myFormId').removeAttr('checked').removeAttr('selected');
//this is for selecting the first entry of the select
$('select option:first', '#myFormId').attr('selected',true);
kertal
quelle
1

Ich verwende die Paolo Bergantino-Lösung, die großartig ist, aber nur wenige Änderungen enthält ... Speziell, um mit dem Formularnamen statt einer ID zu arbeiten.

Zum Beispiel:

function jqResetForm(form){
   $(':input','form[name='+form+']')
   .not(':button, :submit, :reset, :hidden')
   .val('')
   .removeAttr('checked')
   .removeAttr('selected');
}

Jetzt, wenn ich es benutzen will, könnte ich es tun

<span class="button" onclick="jqResetForm('formName')">Reset</span>

Wie Sie sehen, funktioniert dies mit jedem Formular. Da ich zum Erstellen der Schaltfläche einen CSS-Stil verwende, wird die Seite beim Klicken nicht aktualisiert. Nochmals vielen Dank an Paolo für Ihre Eingabe. Das einzige Problem ist, wenn ich Standardwerte im Formular habe.

Raphie
quelle
1

Ich habe die folgende Lösung verwendet und sie hat bei mir funktioniert (Mischen von traditionellem Javascript mit jQuery).

$("#myformId").submit(function() {
    comand="window.document."+$(this).attr('name')+".reset()";
    setTimeout("eval(comando)",4000);
})
Marcelo Martins
quelle
1

Ich bin nur ein Fortgeschrittener in PHP und ein bisschen faul, in eine neue Sprache wie JQuery einzutauchen, aber ist das Folgende nicht eine einfache und elegante Lösung?

<input name="Submit1" type="submit" value="Get free quote" />
<input name="submitreset" type="submit" value="Reset" />

Ich kann keinen Grund erkennen, warum ich nicht zwei Senden-Schaltflächen habe, nur für unterschiedliche Zwecke. Dann einfach:

if ($_POST['submitreset']=="Reset") {
$_source = "--Choose language from--";
$_target = "--Choose language to--"; }

Sie definieren Ihre Werte einfach wieder auf den Standardwert zurück.

Karel
quelle
0

Eine Methode, die ich für ein ziemlich großes Formular (über 50 Felder) verwendet habe, bestand darin, das Formular einfach mit AJAX neu zu laden, im Grunde genommen einen Rückruf an den Server zu tätigen und die Felder nur mit ihren Standardwerten zurückzugeben. Dies ist viel einfacher, als zu versuchen, jedes Feld mit JS zu erfassen und es dann auf den Standardwert zu setzen. Außerdem konnte ich die Standardwerte an einem Ort aufbewahren - dem Servercode. Auf dieser Site gab es abhängig von den Einstellungen für das Konto auch einige unterschiedliche Standardeinstellungen, sodass ich mir keine Gedanken darüber machen musste, diese an JS zu senden. Das einzige kleine Problem, mit dem ich mich befassen musste, waren einige Vorschlagsfelder, die nach dem AJAX-Aufruf initialisiert werden mussten, aber keine große Sache.

Darryl Hein
quelle
0

Alle diese Antworten sind gut, aber der absolut einfachste Weg, dies zu tun, ist ein gefälschter Reset, dh Sie verwenden einen Link und eine Reset-Schaltfläche.

Fügen Sie einfach etwas CSS hinzu, um Ihre Schaltfläche zum Zurücksetzen zu verbergen.

input[type=reset] { visibility:hidden; height:0; padding:0;}

Und dann fügen Sie auf Ihrem Link Folgendes hinzu

<a href="javascript:{}" onclick="reset.click()">Reset form</a>

<input type="reset" name="reset" id="reset" /><!--This input button is hidden-->

Hoffe das hilft! EIN.

André Figueira
quelle
0
<script type="text/javascript">
$("#edit_name").val('default value');
$("#edit_url").val('default value');
$("#edit_priority").val('default value');
$("#edit_description").val('default value');
$("#edit_icon_url option:selected").removeAttr("selected");
</script>
Sanjay
quelle
0

Hier mit der Aktualisierung für Kontrollkästchen und wählt:

$('#frm').find('input:text, input:password, input:file, textarea').val('');
$('#frm').find('input:radio, input:checkbox').attr("checked",false).checkboxradio("refresh");
$('#frm').find('select').val('').selectmenu('refresh');
Schachmatt711
quelle
0

Ich hatte das gleiche Problem und der Posten von Paolo half mir, aber ich musste eines anpassen. Mein Formular mit der ID advancedindexsearch enthielt nur Eingabefelder und ruft die Werte aus einer Sitzung ab. Aus irgendeinem Grund hat Folgendes bei mir nicht funktioniert:

$("#advancedindexsearch").find("input:text").val("");

Wenn ich danach eine Warnung einfügte, sah ich, dass die Werte korrekt entfernt wurden, aber danach wurden sie wieder ersetzt. Ich weiß immer noch nicht wie oder warum, aber die folgende Zeile hat den Trick für mich getan:

$("#advancedindexsearch").find("input:text").attr("value","");
gizmo753
quelle
0

Paolos Antwort berücksichtigt keine Datumsauswahl. Fügen Sie dies hinzu in:

$form.find('input[type="date"]').val('');
LowGain
quelle
0

Ich habe die ursprüngliche Antwort von Paolo Bergantino ein wenig verbessert

function resetFormInputs(context) {
    jQuery(':input', context)
    .removeAttr('checked')
    .removeAttr('selected')
    .not(':button, :submit, :reset, :hidden')
    .each(function(){
         jQuery(this).val(jQuery(this).prop('defautValue'));
    });
}

Auf diese Weise kann ich jedes Kontextelement an die Funktion übergeben. Ich kann das gesamte Formular oder nur einen bestimmten Satz von Feldern zurücksetzen, zum Beispiel:

resetFormInputs('#form-id'); // entire form
resetFormInputs('.personal-info'); // only the personal info field set

Außerdem bleiben die Standardwerte der Eingaben erhalten.

beroso
quelle
0

Hier ist meine Lösung, die auch mit den neuen HTML5-Eingabetypen funktioniert:

/**
 * removes all value attributes from input/textarea/select-fields the element with the given css-selector
 * @param {string} ele css-selector of the element | #form_5
 */
function clear_form_elements(ele) {
    $(ele).find(':input').each(function() {
        switch (this.type) {
            case 'checkbox':
            case 'radio':
                this.checked = false;
            default:
                $(this).val('');
                break;
        }
    });
}
Pubkey
quelle
1
Sie sollten die breakfolgenden checkboxund radioFälle verschieben. In der aktuellen Position ist dies nicht erforderlich.
bergie3000
0

Wenn Sie das SELECT2-Plugin verwenden und die akzeptierte Antwort ergänzen, müssen Sie das select2-Skript zurückrufen, um Änderungen vorzunehmen. Alle select2-Felder:

function resetForm(formId){
        $('#'+formId).find('input:text, input:password, input:file, select, select2, textarea').val('');
        $('#'+formId).find('input:radio, input:checkbox').removeAttr('checked').removeAttr('selected');
        $('.select2').select2();
    }
Marcelo Agimóvel
quelle
-1
$(this).closest('form').find('input,textarea,select').not(':image').prop('disabled', true);
mmm
quelle