簡體   English   中英

jQuery觸發器單擊無法從AJAX成功運行

[英]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方法調用事件。請參考以下鏈接:

http://api.jquery.com/on/

首先確保您的'data.result'值'Success'格式正確或將返回哪個值,然后使用此值

$(“#continue-upload-input-box”)。trigger(“ click”);

我認為您的代碼是正確的,但這全取決於您的其他jquery代碼

.trigger或多或少像單擊。 要觸發某些動作/事件,在觸發事件之前,元素或對象必須位於DOM中。 因此,如果您從JS加載表單,然后將其附加到DOM中,則允許上傳者顯示的函數必須位於.load函數中,或者最好在ajax觸發之前將其附加到DOM中。

http://api.jquery.com/trigger/

使用$('#continue-upload-input-box').click(); 這樣就足夠了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM