Extjs重置文件字段输入

时间:2012-06-20 11:53:09

标签: javascript file-upload extjs

如何在ExtJS中重置文件字段输入?我在尝试:

//this - point on Ext.panel.Form

var form = this.getForm();
form.reset();

var filefield = this.getForm().getFields().get(0);
filefield.reset();

filefield.setValue('');

filefield.value = '';

但这些方法中没有一种不起作用。谢谢你的帮助!

4 个答案:

答案 0 :(得分:5)

使用以下代码可以帮助您

function clearFileUpload(id){
    // get the file upload element
    fileField     = document.getElementById(id);
    // get the file upload parent element
    parentNod     = fileField.parentNode;
    // create new element
    tmpForm        = document.createElement("form");
    parentNod.replaceChild(tmpForm,fileField);
    tmpForm.appendChild(fileField);
    tmpForm.reset();
    parentNod.replaceChild(fileField,tmpForm);
}

答案 1 :(得分:2)

旧帖子,但我也遇到了这个问题,我发现了一个更清洁的解决方案。

首先确保文件字段具有allowBlank:true set。

然后你可以这样调用setRawValue方法:

    filefield.setRawValue("");

答案 2 :(得分:2)

您可能寻找的最简单方法是:

filefield.fileInputEl.dom.value = '';

答案 3 :(得分:1)

基于这个答案:HTML input file selection event not firing upon selecting the same file

在Ext.ux.form.FileUploadField组件中,在bindListeners函数下的change事件中添加以下代码。

var that = this;
setTimeout(function() {
    that.fileInput.dom.value = null;
    that.setValue(that.fileInput.dom.value);
}, 100);      



bindListeners: function(){
  this.fileInput.on({
    scope: this,
    mouseenter: function() {
      this.button.addClass(['x-btn-over','x-btn-focus'])
    },
    mouseleave: function(){
      this.button.removeClass(['x-btn-over','x-btn-focus','x-btn-click'])
    },
    mousedown: function(){
      this.button.addClass('x-btn-click')
    },
    mouseup: function(){
      this.button.removeClass(['x-btn-over','x-btn-focus','x-btn-click'])
    },
    change: function(){
      var v = this.fileInput.dom.value;
      this.setValue(v);
      this.fireEvent('fileselected', this, v);

      var that = this;
      setTimeout(function() {
        that.fileInput.dom.value = null;
        that.setValue(that.fileInput.dom.value);
      }, 100);
    }
  }); 
},