繁体   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