如何通过单击另一个元素来触发单击输入文件元素

时间:2017-11-21 10:25:10

标签: javascript jquery html file-upload

我在按钮上使用jQuery和Ajax,在输入文件上传元素上更新属性“accept”的值,然后触发点击它。但我只能在Firefox上做到这一点。在Chrome上,触发点击事件不起作用,在IE8上,它可以正常工作,但无法上传所选文件。我该怎么办? 这是我在handleAjaxResponseSuccess函数中的代码:

<button type="button" id="uploadBtn" onclick="getAcceptedExtension()"title="Upload" class=""></button>
<input type="file" name="" id="inputFile" multiple="multiple"style="display: none;" >

我的HTML代码

{{1}}

2 个答案:

答案 0 :(得分:0)

出于安全考虑,某些浏览器不允许直接触发文件输入。 打开对话框的操作必须通过用户交互调用(例如点击)并且输入文件必须可见(显示!=无)并且重点突出。

你可以显示打开对话框,然后像这样隐藏:

&#13;
&#13;
getAcceptedExtension = function() {
  $('#inputFile').attr('accept', '.jpg, .png');
  $('#inputFile').show();
  $('#inputFile').focus();
  $('#inputFile').click();
  $('#inputFile').hide();
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button type="button" id="uploadBtn" onclick="getAcceptedExtension()"title="Upload" class="">CLICK ME</button>
<input type="file" name="" id="inputFile" multiple="multiple"style="display: none;" >
&#13;
&#13;
&#13;

答案 1 :(得分:0)

一个基本而简单的方法是:

A = randi(99,3,3,3); % example data
room = 1; % desired room
coord = 1; % desired coordinate
[~, ind] = sort(A(room,:,coord)); % get indices of the sorting
B = A; % result. Initiallize
B(room,:,:) = B(room,ind,:); % apply sorting to chairs in that room

Jsfiddle:https://jsfiddle.net/vf65pzhj/1/