相关疑难解决方法(0)

Jquery触发器文件输入

我试图使用jQuery触发上传框(浏览按钮).
我现在尝试的方法是:

$('#fileinput').trigger('click');   
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.请帮忙.谢谢.

javascript css jquery

159
推荐指数
10
解决办法
23万
查看次数

触发器在异步ajax done()上单击input = file

我有一个包含一些数据和上传的表单.只有在成功接收和处理数据后才能启动上载.为此,我在我的地方进行ajax调用

  1. 发送数据,
  2. 检查结果,
  3. 触发click()打开文件对话框.

click()的最后一件事不起作用,因为似乎异步调用块打开了一个上传窗口.它只有在我设置时才有效async: false.

我在文档和本网站中找不到任何内容,想知道那里有什么问题,以及如何让它保持调用异步?

例:

$.ajax({
    type: "POST",
    url: "/Save",
    data: jsonText,
    dataType: "json",
    //async: false            [1]
}).done(function (msg) {    
    $("#upload").click();   
});

//$("#upload").click();       [2]
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/c2v00uxn/

注意:

  • 如果我取消注释[1]或[2],它确实有效(文件对话框按预期显示).
  • 用触发器替换click()('click')不起作用
  • 用live()/ on()替换click()没有帮助
  • 文件上传控件是可见的(所以它不是因为隐藏控件)
  • ajax的超时设置没有帮助.

UPDATE

它不是关于如何一般地进行"点击",而是关于如何在异步ajax调用之后单击(截至目前,仅适用于非异步调用).

jquery

32
推荐指数
1
解决办法
5190
查看次数

以编程方式生成/激活的文件输入并不总是触发`input`事件

我的Web应用程序上有一个按钮,它在click事件处理程序中包含以下代码:

const fileInputEl = document.createElement('input');
fileInputEl.type = 'file';
fileInputEl.accept = 'image/*';

fileInputEl.addEventListener('input', (e) => {
  if (!e.target.files.length) {
    return;
  }

  // Handle files here...
});  

fileInputEl.dispatchEvent(new MouseEvent('click'));
Run Code Online (Sandbox Code Playgroud)

有时(大约8分之一),在选择文件后,选择文件后input事件不会触发.我猜这是围绕元素生命周期的浏览器错误.

有什么方法可以将元素附加到页面并稍后删除它?现在在现代浏览器中处理这个问题的正确方法是什么?

我在Windows上使用Google Chrome进行测试.

JSFiddle:http: //jsfiddle.net/pja1d5om/2/

html javascript browser google-chrome blink

16
推荐指数
1
解决办法
383
查看次数

标签 统计

javascript ×2

jquery ×2

blink ×1

browser ×1

css ×1

google-chrome ×1

html ×1