选择文件。提交。无法再次选择文件

时间:2015-08-24 13:20:21

标签: javascript jquery html forms file

我有一个包含不同字段且输入类型为" file"的表单。我使用fileupload jQuery库。

  1. 选择文件

  2. 致电

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

    (第一个文件上传调用init)

  3. 再次尝试选择文件。得到:没有选择文件,清除控制台等。

  4. Upd.1

    问题出现在管理区域中的电子商务框架 Magento2 中。 所描述的表单出现在诸如“滑出面板”之类的实体中。这意味着存在div块,并且使用javascript将此块包含在旁边块中。

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

    以下是演示示例:

      

    管理员网址: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;
    });
    

1 个答案:

答案 0 :(得分:0)

我发现了问题。

在我的情况下,问题出现在初始化fileUpload库之后。

当我选择输入:文件时,库未初始化(读作已感染)。当我按下按钮时,初始化运行并且使用此输入的任何操作都不可用。

解决方案如下:在感染之前克隆我们的输入,而不是我们的操作,最后用之前创建的健康副本替换现有的感染输入。