[英]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.