2015-08-24 89 views
0

我有一個窗體與不同的字段和輸入類型=「文件」。我使用fileupload jQuery庫。選擇文件。提交。無法再次選擇文件

  1. 選擇文件

  2. 呼叫

    $('#some_id').fileupload().fileupload(
            'send', 
            { 
             files: file, 
             url: widget.options.saveVideoUrl, 
            } 
           ).success(
    //... 
    

    (第一文件上傳呼籲INIT)

  3. 再次嘗試選擇文件。得到:沒有選定的文件,清除控制檯等。

Upd.1

的問題出現在電子商務框架Magento2在管理區。 所描述的表單出現在像「滑出式面板」這樣的實體中。這意味着有div塊和這個塊在旁邊塊使用javascript。

<button onclick="jQuery('#new').modal('openModal')" .... > 
    <span>New</span> 
</button> 

這裏演示的例子:

管理URL:https://iwdagency.com/magento2/admin

用戶名:admin

口令:admin123

打開產品/目錄/ 選擇任何產品/點擊新類別

你應該看到以下面板:

enter image description here

在這樣的面板,我用PHP構造域補充說:

<div class="admin__field field field-new_video_screenshot " data-ui-id="product-tabs-tab-google-experiment-fieldset-element-form-field-new-video-screenshot"> 
    <label class="label admin__field-label" for="..." data-ui-id="product-tabs-tab-google-experiment-fieldset-element-file-image-label"><span>Preview Image</span></label> 
    <div class="admin__field-control control"> 
     <input id="...." name="image" data-ui-id="product-tabs-tab-google-experiment-fieldset-element-file-image" value="" title="Preview Image" type="file"> 
    </div> 
</div> 

腳本:

define([ 
    'jquery', 
    'jquery/ui', 
    'Magento_Ui/js/modal/modal', 
    'mage/translate', 
    'mage/backend/tree-suggest', 
    'mage/backend/validation' 
], function ($) { 
    'use strict'; 

    $.widget('mage.newDialog', { 
     _create: function() { 
      var widget = this; 
      var newVideoForm = $('#new'); 

      this.element.modal({ 
       type: 'slide', 
       modalClass: 'mage-new-dialog form-inline', 
       title: $.mage.__('Create'), 
       buttons: [{ 
        text: $.mage.__('Create'), 
        class: 'action-primary', 
        click: function (e) { 
         var file = $('#new_screenshot').get(0).files[0]; 
         var result = $('#new_screenshot').fileupload().fileupload(
          'send', 
          { 
           files: file, 
           url: widget.options.saveUrl, 
          } 
         ).success(
          function(result, textStatus, jqXHR) 
          { 
           var data = JSON.parse(result); 
           data['url'] = $('#new_url').val(); 
           data['name'] = $('#new_name').val(); 
           data['description'] = $('#new_description').val(); 
           $('#media_gallery_content').trigger('addItem', data); 
           $('#new').modal('closeModal') 
          } 
         ); 
        } 
       }], 
      }); 
     } 
    }); 

    return $.mage.newDialog; 
}); 
+0

它是BlueImp文件上傳插件嗎? –

+0

請添加代碼片段,以便我們爲您提供幫助。 –

+0

已更新。對不起,很多信息 – zhartaunik

回答

0

我發現了這個問題。

在我的情況下,問題出現在初始化fileUpload庫後。

當我選擇輸入:文件時,庫未初始化(讀取爲感染)。當我按下按鈕時,初始化會運行,任何使用此輸入的操作都將無法使用。

解決方案如下:在我們的輸入被感染之前克隆我們的輸入,比我們的操作還要多,並且最終用之前創建的健康副本替換現有的感染輸入。