当前位置: 首页 > 知识库问答 >
问题:

在执行函数时关闭Bootstrap Modal(使用Javascript而不是JQuery)

佟涵畅
2023-03-14

我想在执行某个函数时关闭引导模式,但当再次打开模式时,我必须双击才能打开它,我想用一键再次打开,而不是双击,谢谢

关闭引导模式(js)的我的代码

// To Close Modal
        document.getElementById('ItemModel').classList.remove('show');
        document.getElementById('ItemModel').style.display = 'none';
        document.getElementsByClassName('modal-backdrop')[0].remove();
        document.body.classList.remove('modal-open');
        document.body.style.padding = '0';

共有1个答案

蒙峰
2023-03-14

我相信我们都知道这很可能是一个解决办法。有时这会使工作更容易完成。因此有一个显示/隐藏引导4模式的解决方法。

没有jQuery(但在TypeScript中),您可以使用以下逻辑:

showModal(){
    let modal = document.getElementById('downloadModal') as HTMLElement;
    let modalDismiss = modal.querySelector('[data-dismiss]') as HTMLButtonElement;
    let backdrop = document.createElement('div') as HTMLElement;

    modal.setAttribute('aria-modal', 'true');
    modal.style.paddingRight = '16px';
    modal.style.display = 'block';
    modal.removeAttribute('aria-hidden');

    document.body.style.paddingRight = '16px';
    document.body.classList.add('modal-open');

    backdrop.classList.add('modal-backdrop', 'fade');
    document.body.appendChild(backdrop);

    backdrop.addEventListener('click', this.hideModal.bind(this));
    modalDismiss.addEventListener('click', this.hideModal.bind(this));

    setTimeout(function(){
        modal.classList.add('show');
        backdrop.classList.add('show');
    }, 200);
}

hideModal(){
    let modal = document.getElementById('downloadModal') as HTMLElement;
    let modalDismiss = modal.querySelector('[data-dismiss]') as HTMLButtonElement;
    let backdrop = document.querySelector('.modal-backdrop');

    modal.classList.remove('show');
    backdrop.removeEventListener('click', this.hideModal.bind(this));
    modalDismiss.removeEventListener('click', this.hideModal.bind(this));

    setTimeout(function(){
        modal.style.display = 'none';
        modal.removeAttribute('aria-modal');
        modal.removeAttribute('style');
        modal.setAttribute('aria-hidden', 'true');
        document.body.removeAttribute('style');
        document.body.classList.remove('modal-open');
        backdrop.remove();
    }, 200);
}

我希望这不会阻止您将其转换为普通的JavaSript逻辑。

 类似资料:
  • 我需要在我的服务器上运行函数 但是由于安全原因被禁用,但是PHP执行函数正在运行和。 是否可以使用php函数执行相同的操作? 禁用功能 链接,符号链接,执行,通过,proc_close,proc_get_status,proc_open,shell_exec,系统,流行,关闭

  • 想改进这个问题吗 通过编辑此帖子,更新问题,以便用事实和引用来回答。 最初的关闭原因未得到解决 我正在开发Apache Kafka。我想知道哪一个更好:Kafka和ActiveMQ。这两种技术的主要区别是什么?我想在Spring MVC中实现Kafka。

  • 我一直试图改变输入字段从一个到另一个无济于事,当我使用。焦点它给我一个错误,它不是一个函数。 我将粘贴我的代码 有人能帮忙吗。如果你知道更好的方法,我会很感激你引导我走上正确的道路

  • 我在一个项目中工作,我需要要求用户输入一个路径来使用jOptionPane保存程序,但我的问题是,如果用户没有在文本中添加任何内容,然后单击取消或确定,将得到一个错误...我试图控制它,检查字符串是否为空()或等于空

  • 问题内容: 我在javascript中有一个名为“ checkdata(code)”的函数,如您所见,该函数接受一个名为“ code”的参数来运行并返回一个15个字符的字符串。 因此,我发现了(并测试了)如何在javascript中调用无参数函数,但是我的问题是,当我调用checkdata(code)时,总是得到“无”返回值。到目前为止,这是我正在做的事情: 但是,正如我之前说的,我一直都没有打印

  • 问题内容: 我想在用户完成在文本框中的输入后触发ajax请求。我不希望它在用户每次输入字母时都运行该函数,因为这将导致大量的ajax请求,但是我也不希望他们也必须按下Enter键。 有没有一种方法可以让我检测用户何时完成键入,然后执行ajax请求? 在这里使用jQuery!戴夫 问题答案: 因此,我猜想完成键入意味着您只需停顿一会儿,例如5秒钟。因此,请记住,让我们在用户释放按键时启动计时器,并在