当我在表单上单击提交时,它会进行AJAX调用。如果返回值为success
,我想打开文件上传浏览器以从系统上传文件。为此,我在success
消息上使用jQuery的触发器单击。但它没有用。下面是AJAX调用的代码。
$.ajax({
url: AppManager.defaults.contextPath,
data: colMap,
contentType: 'application/json',
type: 'POST',
success: function(data) {
if (data.result == 'Success') {
$('#continue-upload-input-box').trigger('click');
} else {
self.popupView.closePopup();
notify.popup('Error Uploading').error(self.uploadFailureMessage);
}
},
error: function(error) {
console.log(error);
}
});
这是写入文件上传代码的地方:
change: function($view) {
var self = this;
$('<form id="custom-upload" class="input-form-container" enctype="multipart/form-data"></form>').appendTo($view.find('.btn-wrap'));
$view.find('.input-form-container').after('<input name="excelFile" type="file" id="continue-upload-input-box" style="display:none;">');
$view.find('#continue-upload-input-box').off('change').on('change', function(event) {
if (event.target.files.length === 1) {
self.uploadCustomTemplate(new FormData($('#custom-upload')[0]));
self.popupView.closePopup();
}
});
}
上述代码中可能存在什么问题?
答案 0 :(得分:0)
使用
$(document).trigger
insted of
$('#continue-upload-input-box').trigger('click');
如果您使用文档,那么它将执行您的触发事件。如果您的id在触发单击时不在DOM中,则它将不会执行,因此您必须再次加载DOM
答案 1 :(得分:0)
你需要操作dom click事件,而不是jQuery click事件。
尝试: -
$('#continue-upload-input-box').get(0).click();
答案 2 :(得分:0)
使用on方法调用event.refer以下链接:
答案 3 :(得分:0)
首先确保您的数据结果&#39;价值&#39;成功&#39;格式正确或返回哪个值然后使用此
$(&#34;#继续上传输入盒&#34)。触发器(&#34;单击&#34);
我认为你的代码是正确的,但这完全取决于你的其他jquery代码
答案 4 :(得分:0)
.trigger或多或少像点击一样。 在触发事件之前触发某个动作/事件,元素或对象必须在DOM中。 因此,如果您从JS加载表单然后将其附加到DOM中,则允许上传器显示的函数必须位于.load函数中,或者在ajax触发之前将其附加到DOM中更好。
答案 5 :(得分:-1)
使用$('#continue-upload-input-box').click();
。这应该足够了。