drop'n drop时不调用表单onchange事件

杰西卡(Jessica)

我创建了一个带有“拖放”或“单击以上传”文件选项的表单。当这两种情况之一发生时,我希望它触发一个动作。

onchange当表单中的值更改时,我使用该事件来触发操作。

$("#uploadform").on('change', function (e) {
    e.preventDefault();

    alert("Something Changed");
});

仅当我“单击上传”文件时才会触发。当我“拖放”文件时,不会触发该事件。

当我单击“上传”或“拖放”时,如何触发同一事件?

请在JQuery中发布答案。

JSFiddle

$(document).ready(function () {
    "use strict";
    $("#uploadform").on('change', function (e) {
        e.preventDefault();

        alert("Something Changed");
    });

    $('#browseFileDiv').click(function (e) {
        $(this).find('input[type="file"]').click();
    });
    $('#browseFileDiv input').click(function (e) {
        e.stopPropagation();
    });



    // Setup Drag 'n Drop

    function handleFileSelect(evt) {
        evt.stopPropagation();
        evt.preventDefault();
    }

    function handleDragOver(evt) {
        evt.stopPropagation();
        evt.preventDefault();
        evt.dataTransfer.dropEffect = 'copy';
    }

    var dropZone = document.getElementById('browseFileDiv');
    dropZone.addEventListener('dragover', handleDragOver, false);
    dropZone.addEventListener('drop', handleFileSelect, false);
});
#browseFileDiv {
    height: 100px;
    width: 200px;
    background-color: greenyellow;
}
#browseFileDiv > input {
    display:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="upload.php" enctype="multipart/form-data" method="POST" id="uploadform">
    <div id="browseFileDiv">
        <input id="openFile" name="img" type="file" />
    </div>
</form>

吉卜赛人

编辑:

尝试正确实现changedrop监听器。

$("#uploadform").on('change drop', function (e) {
    e.preventDefault();
    e.stopPropagation();

    alert("Something Changed");
});

// No longer need for `drop` event listener on the `dropZone` element.
// In particular DO NOT stop propagation, otherwise the form will not receive it.

更新的演示:http : //jsfiddle.net/jytL8heo/2/


一种解决方法是简单地"change"在拖放时手动触发事件。

function handleFileSelect(evt) {
    // Manually fire the change event.
    $("#uploadform").trigger("change");

    evt.stopPropagation();
    evt.preventDefault();
}

演示:http//jsfiddle.net/jytL8heo/1/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Drag'n'Drop ConcurentModificationException

来自分类Dev

拖动n Drop在缩放容器时无法正常工作

来自分类Dev

在AngularJS指令中未调用drop事件

来自分类Dev

jQuery停止发生drop事件

来自分类Dev

jQuery Drop事件未触发

来自分类Dev

在drop事件上是否真的需要调用preventDefault()?

来自分类Dev

jQuery drop函数未调用

来自分类Dev

处理drop事件时如何定位游标索引?

来自分类Dev

引发drop事件时,设置状态不起作用

来自分类常见问题

未在Chrome中触发Drop事件

来自分类Dev

QListWidget派生:drop事件未触发

来自分类Dev

在Kendo UI Treeview Drop事件中确认

来自分类Dev

DROP DATABASE失败

来自分类Dev

Drop all keyspaces in cassandra

来自分类Dev

laravel jenssejers Drop系列

来自分类Dev

如何拖放Drop DatagridCellContent

来自分类Dev

Liquibase drop首先与postgis

来自分类Dev

如何拖放Drop DatagridCellContent

来自分类Dev

laravel jenssejers Drop系列

来自分类Dev

SQL Server DROP角色

来自分类Dev

Postgres Drop 约束顺序

来自分类Dev

截断v/s DROP

来自分类Dev

当draggable离开嵌套sortable时调用drop

来自分类Dev

为什么HTML5 Drag n Drop目标子级?(可排序列表)

来自分类Dev

jQuery UI(Sortable)-禁用多个框中的排序/拖动n Drop功能

来自分类Dev

自定义Java Swing GUI与Netbeans Drag n'Drop编辑器

来自分类Dev

启用可编辑元素后,JQueryUI Drag n Drop无法排序

来自分类Dev

获取 SettingWithCopyWarning:使用 .replace 和 .drop 时

来自分类Dev

角拖放事件不起作用`drop`事件不触发