我有这个代码
<input id="fileupload"
type="file" name="files[]"
class="inputFile clickable"
onchange="uploadFile(this.value)"/>
第二次使用它时效果很好,即我第一次选择文件时不会触发 onchange 事件,但第二次选择文件时效果很好。
这里有什么我可以改变的吗?
我试过:
onlclick
(不起作用,在选择文件之前触发)onblur
(不起作用,根本不触发,而且即使触发,点击页面上的其他地方来触发操作也是愚蠢的)onselect
(不起作用)
附加信息:
如果我使用 onchange=alert(this.value)
它工作正常
这是我的javascript代码
function uploadFile(value) {
alert(value); //works fine
$('#fileupload').fileupload({
dataType: 'json',
url: 'fileUpload.php',
type: 'POST',
limitConcurrentUploads: 1,
// done: function (e, data) {
// $.each(data.result, function (index, file) {
// $('<p/>').text(file.name).appendTo(document.body);
// });
// },
success: function() {
showMultipleDataDiv(value); //but I don't get value here
}
});
}
最佳答案
代码 $('#fileupload').fileupload
将在用户选择文件后立即触发文件上传。您需要在用户选择文件之前运行这段代码,因为它向输入标签添加了一个事件监听器。由于您仅在用户选择文件后运行此代码,因此它只会在第二次运行。
这是你需要做的改变才能让它发挥作用
$(function () {
$('#fileupload').fileupload({
dataType: 'json',
url: 'fileUpload.php',
type: 'POST',
limitConcurrentUploads: 1,
// done: function (e, data) {
// $.each(data.result, function (index, file) {
// $('<p/>').text(file.name).appendTo(document.body);
// });
// },
success: function () {
showMultipleDataDiv(value); //but I don't get value here
}
});
});
请注意,无需在更改事件中添加代码。该插件将为您做到这一点。
您可以在这里阅读更多相关信息:https://github.com/blueimp/jQuery-File-Upload/wiki/Basic-plugin
关于javascript - 触发 <input type ="file"/> 的 javascript 事件 onchange 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12383968/