javascript - Html 5 拖放至输入文件

标签 javascript php jquery html forms

我不知道这是否可行,我似乎找不到任何东西。

我想要的是为用户提供“拖放”图像或使用普通 html 文件输入框的选项。

在保存表单之前,我不会上传图片。所以我想拖放区域只会更新字段?

我该怎么做呢?

提前致谢。

最佳答案

我来这里寻找相同的答案。最后执行以下操作,这看起来符合您的需要。

为您的图像下拉框创建一个 div,然后在该 div 中添加您的 input type="file"。根据需要设置高度和宽度。将不透明度设置为 0。现在您的输入填充了 div,看不到,但仍然有效。

<div class="divClass">
  <input class="inputClass" name="inputName" type="file">
</div>

下面的样式

<Style>
.divClass{
  position: relative;
  // anything else
}
.inputClass{
  opacity: 0;
  position: absolute;
  top:0;
  left: 0;
  height: x // as desired
  width: x // as desired
}
</style>

===编辑===

忽略我上面的样式,您真的只需要使用输入类型=文件的表单。根据需要设置样式/布局。

正如 Shazoo 所指出的,拖放图像在 IE 中不起作用。适用于 Firefox 和 Chrome。不确定 Opera 和 Safari。出于安全原因,您不能在输入 type=file 上使用 JavaScript——正如 Jasny 所说,它是只读的,因此您必须依赖浏览器 vendor 允许的内容。

考虑到这一点,您可以只为 IE 用户提供单击该字段以选择和上传文件的选项。 IE 中默认的 input type="file"提供了这种能力,所以只要你让输入可见,他们就应该能看到它。 (默认边输入类型=文件)

Edge Example input type=file

IE 示例过滤器(基于 https://stackoverflow.com/a/31757969/3136874 )

function stopIeDefault(){
  window.addEventListener("dragover",function(e){
    e = e || event;
    e.preventDefault();
  },false);
    window.addEventListener("drop",function(e){
    e = e || event;
    e.preventDefault();
  },false);
}
if (/MSIE 10/i.test(navigator.userAgent)) {
  // This is internet explorer 10
  stopIeDefault()
}

if (/MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent)) {
  // This is internet explorer 9 or 11
  stopIeDefault()
}

if (/Edge\/\d./i.test(navigator.userAgent)){
  // This is Microsoft Edge
  stopIeDefault()
}   

这会测试 IE 和 edge。如果它检测到一个版本,那么它将使用 stopIeDefault 来防止拖放的默认值。如果有人将图像拖放到表单上,这会阻止 IE 加载图像。 (Edge 似乎默认阻止这种情况,因此您可能不需要像我一样调用 stopIeDefault。)此外,您可以应用不同的样式或添加代码块或不处理 IE 的内容。根据 w3schools 的数据,截至 2016 年 8 月,IE 浏览器的份额为 5.2-6.2%:http://www.w3schools.com/browsers/default.asp ,如果这有助于您决定要做什么。

如果有人可以确认拖放是否适用于 Safari 或 Opera,请确认。 ===编辑===

关于javascript - Html 5 拖放至输入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21162384/

相关文章:

php - Chrome自定义标签-安卓-用户代理

php - 将 SAP 与 PHP 后端集成

Javascript - 我无法在字符串的开头连接

javascript - 多次将表单提交到新选项卡

javascript - 使用 JavaScript 搜索名称

并行运行多个php脚本的PHP脚本

javascript - 伪元素操作

javascript - 使用 JQuery scrollTo/localScroll 进行负向定位

javascript - 数组中的JS对象如何返回自己的数组索引?

javascript - DatePicker的css看起来不太好