使用jQuery清除文件输入字段

时间:2011-10-14 14:56:23

标签: jquery forms reset

  

可能重复:
  Blank out a form with jQuery

我正在使用jQuery函数来清除所有表单值。

$.fn.clearForm = function() {
  return this.each(function() {
    var type = this.type, tag = this.tagName.toLowerCase();
    if (tag == 'form')
      return $(':input',this).clearForm();
    if (type == 'text' || type == 'password' || tag == 'textarea')
      this.value = '';
    else if (type == 'checkbox' || type == 'radio')
      this.checked = false;
    else if (tag == 'select')
      this.selectedIndex = -1;
  });
};

上述功能的问题是它不会重置文件输入字段。无论如何,我可以扩展该功能,并使其与清除文件输入字段一起工作。

这里是我正在使用的文件输入字段HTML代码。

<section><label for="productimg">Picture<br></label>
    <div><input type="file" id="productimg" name="productimg"></div>
</section>
谢谢..

5 个答案:

答案 0 :(得分:12)

尝试使用表单重置,以返回初始值 -

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

演示 - http://jsfiddle.net/hPytd/&amp; http://jsfiddle.net/hPytd/1/

答案 1 :(得分:2)

您可以在表单元素上调用native reset()方法:

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

答案 2 :(得分:2)

您可以使用html替换文件输入来执行此操作,

 var id=$(this).attr('id');
    $(this).replaceWith("<input type='file' id='"+id+"' />");

答案 3 :(得分:0)

您是否曾尝试将类型文件添加到验证中,如下所示:

if(type =='text'|| type =='password'|| tag =='textarea'|| type =='file')

答案 4 :(得分:0)

根据完整的范围,有多种方法可以实现您想要的结果,它们比您想象的要容易得多:

  1. 使用<input type="reset" />重置表单
  2. 在jQuery中构建.reset()函数:

    jQuery.fn.reset = function(){
      $(this).each (function() { this.reset(); }); 
    }
    
  3. 注意:方法2执行work,因为它是本机JavaScript函数。