[英]jQuery trigger click not working from AJAX success
当我单击表单上的提交时,它将进行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();
}
});
}
上面的代码可能是什么问题?
采用
$(document).trigger
装的
$('#continue-upload-input-box').trigger('click');
如果使用文档,它将执行触发事件。 如果您的ID在触发点击时不在DOM中,则它将不会执行,因此您必须再次加载DOM
您需要操作dom click事件,而不是jQuery click事件。
尝试:-
$('#continue-upload-input-box').get(0).click();
使用on方法调用事件。请参考以下链接:
首先确保您的'data.result'值'Success'格式正确或将返回哪个值,然后使用此值
$(“#continue-upload-input-box”)。trigger(“ click”);
我认为您的代码是正确的,但这全取决于您的其他jquery代码
.trigger或多或少像单击。 要触发某些动作/事件,在触发事件之前,元素或对象必须位于DOM中。 因此,如果您从JS加载表单,然后将其附加到DOM中,则允许上传者显示的函数必须位于.load函数中,或者最好在ajax触发之前将其附加到DOM中。
使用$('#continue-upload-input-box').click();
。 这样就足够了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.