.Reset () yöntemiyle jQuery kullanarak form sıfırlama


270

Bir sıfırlama düğmesine tıkladığımda formumu sıfırlayabilecek çalışma kodum vardı. Ancak benim kod uzadıktan sonra, artık çalışmadığını fark.

 <div id="labels">
        <table class="config">
            <thead>
                <tr>
                    <th colspan="4"; style= "padding-bottom: 20px; color:#6666FF; text-align:left; font-size: 1.5em">Control Buttons Configuration</th>
                </tr>
                <tr>
                    <th>Index</th>
                    <th>Switch</th>
                    <th>Response Number</th>
                    <th>Description</th>
                </tr>
            </thead>
            <tbody>

                <form id="configform" name= "input" action="#" method="get">
                <tr><td style="text-align: center">1</td>
                    <td><img src= "static/switch.png" height="100px" width="108px"></td>
                    <td id="small"><input style="background: white; color: black;" type="text" value="" id="number_one"></td>
                    <td><input style="background: white; color: black;" type="text"  id="label_one"></td>
                </tr>
                <tr>
                    <td style="text-align: center">2</td>
                    <td><img src= "static/switch.png" height="100px" width="108px"></td>
                    <td id="small"><input style="background: white; color: black;" type="text" id = "number_two" value=""></td>
                    <td><input style="background: white; color: black;" type="text"  id = "label_two"></td>
                </tr>
                <tr>
                    <td style="text-align: center">3</td>
                    <td><img src= "static/switch.png" height="100px" width="108px"></td>
                    <td id="small"><input style="background: white; color: black;" type="text" id="number_three" value=""></td>
                    <td><input style="background: white; color: black;" type="text" id="label_three"></td>
                </tr>
                <tr>
                    <td style="text-align: center">4</td>
                    <td><img src= "static/switch.png" height="100px" width="108px"></td>
                    <td id="small"><input style="background: white; color: black;" type="text" id="number_four" value=""></td>
                    <td><input style="background: white; color: black;" type="text" id="label_three"></td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="submit" id="configsubmit" value="Submit"></td>
                </tr>
                <tr>
                    <td><input type="reset" id="configreset" value="Reset"></td>
                </tr>

                </form>
            </tbody>
        </table>

    </div>

Ve jQuery'm:

 $('#configreset').click(function(){
            $('#configform')[0].reset();
 });

.reset()Yöntemin çalışması için kodlarıma eklemem gereken bazı kaynaklar var mı ? Daha önce kullanıyordum:

<script src="static/jquery.min.js">
</script>
<script src="static/jquery.mobile-1.2.0.min.js">
</script>

ve .reset()yöntem çalışıyordu.

Şu anda kullanıyorum

<script src="static/jquery-1.9.1.min.js"></script>      
<script src="static/jquery-migrate-1.1.1.min.js"></script>
<script src="static/jquery.mobile-1.3.1.min.js"></script>

Muhtemelen sebeplerden biri olabilir mi?


çalışmamaya bir örnek verebilir misiniz? alanlardan herhangi biri sıfırlanıyor mu?
Arun P Johny

böyle bir şey ama burada iyi çalışıyor jsfiddle.net/chJ8B :( muhtemelen komut dosyasının diğer bölümleri nedeniyle? ama ben sadece 1 formu var
yvonnezoe

sorumu alanın hiçbirinin sıfırlanıp sıfırlanmadığı / bazılarının çalışıp çalışmadığı
Arun P Johny

13
HTML'niz geçersiz . Bir form, TBODY öğesinin alt öğesi olamaz ve TR, FORM öğesinin alt öğesi olamaz. Form etiketlerini tablonun dışına koyun (yani tabloyu forma koyun). Büyük olasılıkla form tablonun dışına taşınır, ancak form denetimleri hücrelerde kalır, böylece artık formda olmazlar.
RobG

@RobG: Ey iyi nokta! bunu deneyeceğim. teşekkür ederim! Eğer benim keman link almak için buraya gelmezseniz ben bu yararlı yorum kaçırmış olabilir: s
yvonnezoe 14:13

Yanıtlar:


464

trigger () Referans Bağlantısını kullanmayı deneyebilirsiniz

$('#form_id').trigger("reset");

2
Sadece büyülü ve düz ileri! Paylaşım için çok takdir etmek.
Ajay Kumar

sevgili seçmenler, lütfen cevapsızlığınızın arkasındaki nedeni söyleyebilir misiniz, böylece cevabımı geliştirebilirim.
SagarPPanchal

$ ('. Profile_img_form'). Trigger ('reset') kullanıyorum; Formumda profile_img_form adlı sınıf ekledim sonra çağırdı. formumu ve yakalanmayan sözdizimi gibi dönen hata iletisini sıfırlamıyor Hata: Geçersiz düzenli ifade: /(^|\.)bs\.(?:.*\.|)fileinput(\.|$)/: Lütfen ne olduğunu önerin konu. Teşekkürler.
Kamlesh

@Kamlesh işe yarayacak, senin için bir demo oluşturdum, jsfiddle.net/Lkt4eq9y/2
SagarPPanchal 26:19

1
Cevap için teşekkürler. Kaydedilen saatler Googling / SO'ing :)
Anjana Silva

276

http://jsfiddle.net/8zLLn/

  $('#configreset').click(function(){
        $('#configform')[0].reset();
  });

JS kemanına koy. Amaçlandığı gibi çalıştı.

Yani, yukarıda belirtilen sorunların hiçbiri burada hatalı değildir. Belki çakışan bir kimlik sorununuz var mı? Tıklama gerçekten yürütülüyor mu?

Düzenleme: (uygun yorum yeteneği olmadan üzgün bir çuval olduğum için) Doğrudan kodunuzla ilgili bir sorun değil. Kullanmakta olduğunuz sayfanın bağlamından çıkardığınızda iyi çalışır, bu nedenle, belirli jQuery / javascript ve ilişkilendirilmiş form verileriyle bir şey olmak yerine, başka bir şey olması gerekir. Etrafındaki kodu ikiye bölmeye başladım ve nerede olduğunu bulmaya çalıştım. Demek istediğim, sadece 'emin olmak' için herhalde ...

console.log($('#configform')[0]);

tıklayın ve doğru formu hedeflediğinden emin olun ...

ve eğer öyleyse, burada listelenmeyen bir şey olmalı.

bölüm 2: deneyebilirsiniz bir şey (doğru hedefleme değilse) kullanmaktansa "giriş: sıfırlama" kullanmaktır ... Ayrıca, yanlış bulmak için çalışan hedef değil çünkü ben öneririm gerçek tıklamanın hedeflemesidir. Sadece kundakçı / geliştirici araçlarını aç, sana ne oldu, içeri at

console.log($('#configreset'))

ve ne olduğunu görün. ve sonra oradan gidebiliriz.


çakışan ID yok :( katman katman seçmek ve tıklamanın işe
yarayıp yaramadığını

1
hmm tıklama çalışmıyor gibi görünüyor! $('#ptest').html("clicked reset")click (function () {}) 'a ekledim ; nerede "tıklanan sıfırlama" göstermelidir, ancak
gelmedi

Burada bir sorum var. console.log'u her kullandığımda, nereye bakacağım hakkında hiçbir fikrim yok. Python IDLE ve python komut dosyasını çalıştırmak için bir terminal kullanıyorum. içinde javascript var. Neyse, `alert ($ ('# configform') [0]) kullandığımda bana [object HTMLFormElement] veriyor
yvonnezoe

1
Uyarıyı kullanmayı deneyin (JSON.stringify ($ '# configform') [0])). Alert, güzel baskı nesneleri (veya içinde ne olduğunu söyleme) için çok fazla umursamaz. Sadece bunun bir nesne olduğunu bilmenizi sağlar.
FullOnFlatWhite

1
@DylanChensky jQuery büyüsü her şeyin bir set (dizi) olmasıdır. JQuery'de normal bir dizi kullanıyormuşsunuz gibi [0]ilk öğeyi seçer. Ancak jQuery'de, öğenin gerçek html'sini seçer. Yani, [0]size html veriyor, html'yi çağırmanıza izin veriyor, jQuery değil, çağrılan yöntemi reset. Daha fazla bilgi için @kevin'in cevabına bakınız.
FullOnFlatWhite

110

Bu yazıya göre burada , jQuery hiçbir sahiptir reset()yöntemi; ancak yerel JavaScript bunu yapar. Bu nedenle, jQuery öğesini aşağıdakilerden birini kullanarak bir JavaScript nesnesine dönüştürün:

$("#formId")[0].reset()
// or
$("#formId").get(0).reset()

1
Çalışıyor ve katılıyorum, jQuery sıfırlama () yöntemi yoktur. : Sen W3School dokümana yerli JavaScript ile bunu nasıl görebilirsiniz w3schools.com/jsref/met_form_reset.asp
serfer2

2
Bunun sadece formu sıfırlayacağını , temizlemediğini belirtmek isterim . Yani, formda istekle birlikte gönderilen değerler varsa bunlar geri yüklenir.
Koruyucu bir

Yer tutucu, formun ilk oluşturulması, form öğelerinin yer tutucu değerleri var, bu sıfırlamadan sonra tekrar gösterilen yer tutucudan bağımsız olarak değer eklemek istiyorum, ancak değer boşlaşıyor, bu yüzden form doğrulaması sırasında dikkatli olun. Yer tutucu değerini varsayılan olarak kontrol etmek için genel form doğrulama ekliyordum.
Ramratan Gupta

48

Bu, vanilya Javascript'te jQuery'den daha kolay yapılan şeylerden biridir. jQuery'nin bir resetyöntemi yoktur, ancak HTML Form Öğesi vardır, böylece bir formdaki tüm alanları aşağıdaki gibi sıfırlayabilirsiniz:

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

(Burada diğer yanıtlar görüldüğü gibi: Eğer jQuery ile Bunu yaparsanız $('#configform')[0].reset()), [0]sen üzerinden doğrudan alacağı aynı form DOM öğesi getiriliyor document.getElementById. İkinci yaklaşım hem daha verimli hem de daha basittir (çünkü jQuery yaklaşımı ile önce bir koleksiyon alırsınız ve daha sonra ondan bir öğe almanız gerekirken, vanilya Javascript ile öğeyi doğrudan alırsınız).


23

Sıfırlama düğmesinin hiç komut dosyasına (veya ad veya kimliğe) ihtiyacı yoktur:

<input type="reset">

ve işiniz bitti. Ancak gerçekten komut dosyası kullanmanız gerekiyorsa , her form denetiminin içinde bulunduğu forma başvuran bir form özelliği olduğunu unutmayın , böylece şunları yapabilirsiniz:

<input type="button" onclick="this.form.reset();">

Ancak sıfırlama düğmesi çok daha iyi bir seçimdir.


u sadece bu çizgi yapacak? oO html benim yukarıdaki doğru mu?
yvonnezoe

"Çalışmıyor" u tanımlayın. Hangi hatayı alıyorsun? Neler çalışmıyor? Sıfırlama düğmeleri sonsuza dek HTML formlarının bir parçası olmuştur, çalışırlar.
RobG

1
"çalışmıyor" - hiçbir şey sıfırlanmaz, formda herhangi bir değişiklik görülmedi.
yvonnezoe

1
Dikkat edilmesi gereken bir nokta, "reset" in "formum silindi" anlamına gelmediğidir. "Sıfırla" nın anlambilimi aslında tüm "form" öğelerini orijinal "değer" özelliklerine geri döndürmektir. Bu beni en azından birkaç dakika karıştırdı!
jocull

@ jocull — her şey başarısız olduğunda, her zaman HTML standardının W3C veya WHATWG sürümü vardır. ;-)
RobG

21

Sonunda sorunu çözdüm !! @RobG formetiket ve tableetiket konusunda haklıydı . Etiket masanın dışına yerleştirilmelidir. Bununla,form

<td><input type="reset" id="configreset" value="Reset"></td>

jquery veya başka bir şey gerektirmeden çalışır. düğmesine ve tadaa basit bir tıklama ~ tüm form sıfırlanır;) parlak!


3
bunun gerçekleştiğini genellikle kaynak kodu inceleyerek (sayfa kaynağını görüntülemediğinden, bunun ne oluşturulduğunu göstereceğinden, bunun yerine Geliştirici Araçları <kbd> F12 </kbd> gibi bir şey kullandığınızda) " tarayıcı "görür - bu durumda o olur size göstermek (Chrome'da, en azından) bu formetiketi otomatik başında kapalı kalmıştı tbodygiriş elemanları hariç.
drzaus


16

Bu basit kodu kullanın:

//reset form 
$("#mybutton").click(function(){
    $("#myform").find('input:text, input:password, input:file, select, textarea').val('');
    $("#myform").find('input:radio, input:checkbox').removeAttr('checked').removeAttr('selected');
});


13

Jquery işlevini kullanarak .closest (element) ve .find (...) .

Alma ebeveyn elemanı ve arayan çocuk .

Son olarak, gerekli işlevi yapın.

$("#form").closest('form').find("input[type=text], textarea").val("");

4
Bu kod bloğu soruyu cevaplayabilse de, neden böyle yaptığına dair her zaman bir açıklama yapmalısınız.
Sascha Wolf

1
$("#form").find("input[type=text], textarea").val("");bu şekilde yaptım
Bira

11

İlk satır form girişlerini sıfırlar

$('form#myform').trigger("reset"); //Line1
$('form#myform select').trigger("change"); //Line2

İkincisi seçimi sıfırlar2

İsteğe bağlı: Farklı etkinliklerle kayıtlı farklı türleriniz varsa bunu kullanabilirsiniz

$('form#myform select, form input[type=checkbox]').trigger("change"); //Line2

5

Bu jQuery sıfırlama işleviyle form alanlarını hızlı bir şekilde sıfırlamak mümkündür.

Başarı yanıtı aldığınızda kodun altına ateşleyin.

$(selector)[0].reset();


4

Bunun gibi bir id = resetform ile bir girdi türü = sıfırlama ekleyebilirsiniz.

<html>
<form>
<input type = 'reset' id = 'resetform' value = 'reset'/>
<!--Other items in the form can be placed here-->
</form>
</html>

jquery ile öğenin üzerindeki id = resetform ile .click () işlevini aşağıdaki gibi kullanabilirsiniz

<script> 
$('#resetform').click();
</script>

ve form sıfırlanır Not: css'nizi kullanarak sıfırlama düğmesini id = resetform ile de gizleyebilirsiniz

<style>
#resetform
{
display:none;
}
</style>

Onu daha modern bir form haline getirmek için saklamayı unutma. <input type = 'reset' id = 'resetform' value = 'reset' / style = 'display: none;'>
mangalar

3

İşte Jquery ile basit bir çözüm. Küresel olarak çalışır. Koda bir göz atın.

$('document').on("click", ".clear", function(){
   $(this).closest('form').trigger("reset");
})

Sıfırlamanız gereken her formdaki bir düğmeye net bir sınıf ekleyin. Örneğin:

<button class="button clear" type="reset">Clear</button>

3

jQuery bulunmamaktadır reset()yöntemi; ancak yerel JavaScript bunu yapar. Bu nedenle, jQuery öğesini aşağıdakilerden birini kullanarak bir JavaScript nesnesine dönüştürün:

$("#formId")[0].reset();

$("#formId").get(0).reset();

Javascript kodunu kullanabiliriz

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

2
<button type="reset">Reset</reset>

Bunu düşünmenin en basit yolu sağlam. Form etiketinin içine yerleştirin.


1

Aşağıdakileri kullanabilirsiniz.

@using (Html.BeginForm("MyAction", "MyController", new { area = "MyArea" }, FormMethod.Post, new { @class = "" }))
{
<div class="col-md-6">
    <div class="col-lg-3 col-md-3 col-sm-3 col-xs-12">
        @Html.LabelFor(m => m.MyData, new { @class = "col-form-label" })
    </div>
    <div class="col-lg-9 col-md-9 col-sm-9 col-xs-12">
        @Html.TextBoxFor(m => m.MyData, new { @class = "form-control" })
    </div>
</div>
<div class="col-md-6">
    <div class="">
        <button class="btn btn-primary" type="submit">Send</button>
        <button class="btn btn-danger" type="reset"> Clear</button>
    </div>
</div>
}

Ardından formu temizleyin:

    $('.btn:reset').click(function (ev) {
        ev.preventDefault();
        $(this).closest('form').find("input").each(function(i, v) {
            $(this).val("");
        });
    });

Burada bir çok çerçeveye özgü kod var gibi görünüyor. SO ile ilgili soruları yanıtlarken bu tür şeylerden kaçınmanızı öneririm, çünkü soru jQuery dışında herhangi bir çerçeve kullandıklarını belirtmedi
Lazerbeak12345

0

Kodunuzun çalışması gerekir. Var olduğundan emin olun static/jquery-1.9.1.min.js. Ayrıca, geri dönmeyi de deneyebilirsiniz static/jquery.min.js. Bu sorunu çözüyorsa, sorunu tespit ettiniz.


Düşünebileceğim diğer tek sorun, aynı kimliğe ( configform) sahip başka bir formunuz olması . Konsolu kullanarak biraz araştırma yapmalısınız. İlk deneyin $. Chrome kullanıyorsanız, $jQuery yüklüyse konsola yazmak bağlama duyarlı bir listeyi etkinleştirir. Eğer yazarsanız $ve basın dönüş jQuery yüklü ise, bir işleve değerlendirecektir. Sonraki deneme $("#configform"). Sonucu sağ tıklayın ve öğesini seçin Reveal in Elements panel.
ic3b3rg

teşekkür ederim :) ama krom yok. kundakçı kullanarak aynı şekilde mi? (
Yükledim
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.