2

I have a filefield componente in my application and I want to restrict it to only image files. I've found this question on stackoverflow:

How to restrict file type using xtype filefield(extjs 4.1.0)?

Add accept="image/*" attribute to input field in ExtJs

I'm using this code:

{
  xtype:'filefield',
  listeners:{
    afterrender:function(cmp){
      cmp.fileInputEl.set({
        accept:'audio/*'
      });
    }
  }
}

But this code only works the first time I click on "Examine" button, when I click again on it, the restriction dissapears. I've been looking for other events like onclick to write this code in that event, but I don't find the best way to do it, Anyone has any idea?

Greetings.

Community
  • 1
  • 1
Alavaros
  • 1,665
  • 7
  • 32
  • 52

1 Answers1

0

This is happening because when you submit form, it calls Ext.form.field.File#reset(). You should override reset() method like this, to keep you accept property:

{
        xtype:'filefield',
        reset: function () {  
          var me = this,                                                                
            clear = me.clearOnSubmit;
         if (me.rendered) {   
            me.button.reset(clear);
            me.fileInputEl = me.button.fileInputEl;
            me.fileInputEl.set({
               accept: 'audio/*'    
            });
            if (clear) {
               me.inputEl.dom.value = '';
            }
            me.callParent();
        }},
        listeners:{
           afterrender:function(cmp){
              cmp.fileInputEl.set({
                  accept:'audio/*'
              });
           }
        }
}
stinger
  • 3,790
  • 1
  • 19
  • 30