使用jQuery清除表单字段

时间:2011-06-15 20:59:39

标签: jquery html forms

我想清除表单中的所有input和textarea字段。当使用带有reset类的输入按钮时,它的工作方式如下:

$(".reset").bind("click", function() {
  $("input[type=text], textarea").val("");
});

这将清除页面上的所有字段,而不仅仅是表单中的字段。我的选择器如何只是实际重置按钮所在的形式?

30 个答案:

答案 0 :(得分:594)

对于jQuery 1.6 +

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

对于jQuery< 1.6

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

请看这篇文章: Resetting a multi-stage form with jQuery

或者

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

作为jQuery suggests

  

要检索和更改DOM属性,例如表单元素的checkedselecteddisabled状态,请使用.prop()方法。

答案 1 :(得分:455)

$(".reset").click(function() {
    $(this).closest('form').find("input[type=text], textarea").val("");
});

答案 2 :(得分:147)

任何原因都不应该使用?

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

答案 3 :(得分:59)

这不会处理表单输入字段具有非空默认值的情况。

应该有用的东西

$('yourdiv').find('form')[0].reset();

答案 4 :(得分:48)

如果你使用选择器并使值为空值,它不会重置表单,它会使所有字段为空。重置是在从服务器端加载表单之后,从用户执行任何编辑操作之前的格式。如果存在名称为“username”的输入并且该用户名是从服务器端预填充的,则此页面上的大多数解决方案将从输入中删除该值,而不是将其重置为用户更改之前的值。如果您需要重置表单,请使用:

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

如果你不需要重置表单,但是用一些值填充所有输入,例如空值,那么你可以使用其他评论中的大部分解决方案。

答案 5 :(得分:28)

简单,但就像魅力一样。

$("#form").trigger('reset'); //jquery
document.getElementById("myform").reset(); //native JS

答案 6 :(得分:27)

如果有人还在阅读这个帖子,这里是最简单的解决方案,不是使用jQuery,而是使用简单的JavaScript。如果输入字段在表单内,则有一个简单的JavaScript重置命令:

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

更多相关信息: http://www.w3schools.com/jsref/met_form_reset.asp

干杯!

答案 7 :(得分:20)

$('form[name="myform"]')[0].reset();

答案 8 :(得分:15)

为什么需要使用任何JavaScript?

<form>
    <!-- snip -->
    <input type="reset" value="Reset"/>
</form>

http://www.w3.org/TR/html5/the-input-element.html#attr-input-type-keywords


  

首先尝试一下,它不会清除具有默认值的字段。

这是用jQuery做的一种方法,然后:

$('.reset').on('click', function() {
    $(this).closest('form').find('input[type=text], textarea').val('');
});

答案 9 :(得分:11)

我最简单的方法是重置表单

jQuery("#review-form")[0].reset();

$("#review-form").get().reset();

答案 10 :(得分:11)

如果您想清空所有输入框而不管其类型是什么,那么它只需一分钟

data$A[with(data, ave(A==1, ID, FUN = cumsum)<1)] <- 1

答案 11 :(得分:10)

使用Javascript,您只需使用此语法getElementById("your-form-id").reset();

即可

你也可以通过这种方式$('#your-form-id')[0].reset();

调用reset函数来使用jquery

切记不要忘记[0]。如果

,您将收到以下错误
  

TypeError:$(...)。reset不是函数

JQuery还提供了一个可以使用的事件

  

$(&#39;#form_id&#39)触发。(&#34;重置&#34);

我尝试过它。

注意:重要的是要注意这些方法只将表单重置为服务器在页面加载时设置的初始值。这意味着如果您的输入设置为值&#39;设置值&#39;在进行随机更改之前,在调用reset方法后,该字段将重置为相同的值。

希望有所帮助

答案 12 :(得分:6)

$('#editPOIForm').each(function(){ 
    this.reset();
});

其中editPOIForm是表单的id属性。

答案 13 :(得分:5)

为什么你不使用document.getElementById("myId").reset();?这是简单而漂亮的

答案 14 :(得分:5)

经过测试和验证的代码:

  $( document ).ready(function() {
    $('#messageForm').submit(function(e){
       e.preventDefault();
    });
    $('#send').click(function(e){
      $("#messageForm")[0].reset();
    });
  });

Javascript必须包含在$(document).ready中,并且必须符合您的逻辑。

答案 15 :(得分:4)

最简单,最好的解决方案是 -
$("#form")[0].reset();

不要在这里使用 -
$(this)[0].reset();

答案 16 :(得分:3)

让我们说如果你想清除字段和除了帐户类型,平均时间下拉框将被重置为特定值,即'All'。剩余字段应重置为空即文本框。这种方法将是用于清除特定字段作为我们的要求。

 $(':input').not('#accountType').each( function() {

    if(this.type=='text' || this.type=='textarea'){
             this.value = '';
       }
    else if(this.type=='radio' || this.type=='checkbox'){
         this.checked=false;
      }
         else if(this.type=='select-one' || this.type=='select-multiple'){
              this.value ='All';
     }
 });

答案 17 :(得分:3)

我用这个:

$(".reset").click(function() {
  $('input[type=text]').each(function(){
     $(this).val('');
  });
});

这是我的按钮:

<a href="#" class="reset">
  <i class="fa fa-close"></i>
     Reset
</a>

答案 18 :(得分:2)

$(document).ready(function() {
    $('#reset').click(function() {
    $('#compose_form').find("input[type=text] , textarea ").each(function() {
    $(this).val('');
   });
  });
});  

答案 19 :(得分:2)

使用此代码您想通过jQuery调用正常重置功能

setTimeout("reset_form()",2000);

在文档就绪中将此功能写出网站jQuery

<script>
function reset_form()
{
    var fm=document.getElementById('form1');
    fm.reset();
}
</script>

答案 20 :(得分:2)

通过结合使用JQuery的.trigger()和本机Javascript的.reset(),可以将所有表单元素重置为空白状态。

$(".reset").click(function(){
    $("#<form_id>").trigger("reset");
});

<form_id>替换为要重置的表单ID。

答案 21 :(得分:2)

有些人抱怨收音机等已清除默认的“已检查”状态...您要做的就是将.radio,:checkbox选择器添加到.not中,问题就解决了。

如果您无法使所有其他重置功能都起作用,那么此功能将起作用。

  • 改编自ngen的答案

    function form_reset(formID){
        $(':input','#'+formID)
        .not(':button',':submit',':reset',':hidden',':radio',':checkbox')
        .val('');
    }
    

答案 22 :(得分:1)

@using (Ajax.BeginForm("Create", "AcceptanceQualityDefect", new AjaxOptions()
{
    OnSuccess = "ClearInput",
    HttpMethod = "Post",
    UpdateTargetId = "defect-list",
    InsertionMode = InsertionMode.Replace
}, new { @id = "frmID" })) 
  1. frmID
  2. 形式的标识 我们称之为JavaScript函数的操作的
  3. OnSuccess,名称为“ClearInput

    <script type="text/javascript">
        function ClearInput() {
            //call action for render create view
            $("#frmID").get(0).reset();
        }
    </script>
    
  4. 如果您同时做到这两项,那么您将无法阻止它工作......

答案 23 :(得分:0)

如果我想清除除accountType之外的所有字段。请使用以下

$q(':input','#myform').not('#accountType').val('').removeAttr('checked').removeAttr('selected');

答案 24 :(得分:0)

以下代码清除所有表单,其字段将为空。如果您想在页面包含多个表单时仅清除特定表单,请提及表单的ID或类

$("body").find('form').find('input,  textarea').val('');

答案 25 :(得分:0)

我在这里看到的代码以及相关的SO问题似乎都不完整。

重置表单意味着从HTML中设置原始值,因此我根据上面的代码将它放在一起进行一个小项目:

            $(':input', this)
                .not(':button, :submit, :reset, :hidden')
                .each(function(i,e) {
                    $(e).val($(e).attr('value') || '')
                        .prop('checked',  false)
                        .prop('selected', false)
                })

            $('option[selected]', this).prop('selected', true)
            $('input[checked]',   this).prop('checked',  true)
            $('textarea',         this).each(function(i,e) { $(e).val($(e).html()) })

如果我遗失任何内容或有任何可以改进的地方,请告诉我。

答案 26 :(得分:0)

我写了一个通用的jQuery插件:

/**
 * Resets any input field or form
 */
$.fn.uReset = function () {
    return this.filter('form, :input').each(function () {
        var input = $(this);
        
        // Reset the form.
        if (input.is('form')) {
            input[0].reset();
            return;
        }

        // Reset any form field.
        if (input.is(':radio, :checkbox')) {
            input.prop('checked', this.defaultChecked);
        } else if (input.is('select')) {
            input.find('option').each(function () {
                $(this).prop('selected', this.defaultSelected);
            });
        } else if (this.defaultValue) {
            input.val(this.defaultValue);
        } else {
            console.log('Cannot reset to default value');
        }
    });
};

$(function () {
    // Test jQuery plugin.
    $('button').click(function (e) {
        e.preventDefault();
        
        var button = $(this),
            inputType = button.val(),
            form = button.closest('form');
        
        if (inputType === 'form') {
            form.uReset()
        } else {
            $('input[type=' + inputType + '], ' + inputType, form).uReset();
        }
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<h3>Form</h3>
<form>
    <input type="text" value="default"/><br /><br />
    Ch 1 (default checked) <input type="checkbox" name="color" value="1" checked="checked" /><br />
    Ch 2 <input type="checkbox" name="color" value="2" /><br />
    Ch 3 (default checked) <input type="checkbox" name="color" value="3" checked="checked" /><br /><br />
    <select name="time"><br />
        <option value="15">15</option>
        <option selected="selected" value="30">30</option>
        <option value="45">45</option>
    </select><br /><br />
    R 1 <input type="radio" name="color" value="1" /><br />
    R 2 (default checked) <input type="radio" name="color" value="2" checked="checked" /><br />
    R 3 <input type="radio" name="color" value="3" /><br /><br />
    <textarea>Default text</textarea><br /><br />
    
    <p>Play with form values and then try to reset them</p>
    
    <button type="button" value="text">Reset text input</button>
    <button type="button" value="checkbox">Reset checkboxes</button>
    <button type="button" value="select">Reset select</button>
    <button type="button" value="radio">Reset radios</button>
    <button type="button" value="textarea">Reset textarea</button>
    <button type="button" value="form">Reset the Form</button>
</form>

答案 27 :(得分:0)

当页面包含对涉及IHttpHandler请求处理(验证码)的Web用户控件的调用时,以上都不适用于简单的情况。 发送requsrt(用于图像处理)后,下面的代码不会清除表单上的字段(在发送HttpHandler请求之前),每个事件都能正常工作。

<input type="reset"  value="ClearAllFields" onclick="ClearContact()" />

 <script type="text/javascript">
       function ClearContact() {
           ("form :text").val("");
       }
    </script>

答案 28 :(得分:-2)

添加隐藏的重置按钮,如下所示

<input id="resetBtn" type="reset" value="reset" style="display:none" />
// Call reset buttons click event
// Similar to ClearInputs('resetBtn');
function ClearInputs(btnSelector) {
     var btn = $("#" + btnSelector);
     btn.click();
}

答案 29 :(得分:-3)

$('form')。submit(function(){

var el = $(this);

$('<button type="reset" style="display:none; "></button>')
    .appendTo(el)
    .click()
    .remove()
;

return false;

});