【问题标题】:jQuery Swal using Prevent Default then trigger after confirmationjQuery Swal 使用 Prevent Default 然后在确认后触发
【发布时间】:2021-11-01 12:38:56
【问题描述】:

我使用sweetalert 在单击按钮之前触发确认框并使用preventDefault。确认后有没有办法删除preventDefault?我试过触发点击,但它一直在打开确认。这是我在下面尝试过的:

function delete_all_product( _e ) {
        _e.preventDefault();
        Swal.fire({
            title: 'Are you sure you want change region to '+$(this).val()+'?',
            icon: 'info',
            confirmButtonText: 'Yes',
            showCancelButton: true,
            }).then((result) => {
            if (result['isConfirmed']){
                po.populate_product_slider(); 
                $('.product-list-item').remove();
                $(this).trigger('click');// this is what I've added but it keeps on reopening the swal because it triggers everytime I click.                              
            }
        }); 
}

$('input[name="prod_reg"]').click(po.delete_all_product);

【问题讨论】:

  • 也许您可以添加一个参数,例如delete_all_product( prevent,_e ),然后执行if (prevent) _e.preventDefault();,然后执行$(this).trigger('click', [false])。未经测试但可能有效。 $('input[name="prod_reg"]').click(po.delete_all_product); 也应该是 $('input[name="prod_reg"]').click({prevent:true},po.delete_all_product);
  • @CarstenLøvboAndersen 头脑冷静!非常感谢你的逻辑!

标签: jquery sweetalert2


【解决方案1】:

这是我尝试过的。特别感谢 CarstenLøvboAndersen 的逻辑。

function delete_all_product( prevent ) {
    if(prevent['data']['prevent'] == true){  
    prevent.preventDefault();
    Swal.fire({
        title: 'Are you sure you want change region to '+$(this).val()+'?',
        icon: 'info',
        confirmButtonText: 'Yes',
        showCancelButton: true,
        }).then((result) => {
        if (result['isConfirmed']){
            prevent['data']['prevent'] = false; // this is to prevent multiple clicks 
            $(this).trigger('click', true); 
            po.populate_product_slider(); 
            $('.product-list-item').remove();
            prevent['data']['prevent'] = true; //this is to make the prevent true again for the next click                              
        }
    }); 
   }else{
        prevent['data']['prevent'] = false; 
   }
}

$('input[name="prod_reg"]').click( {prevent:true}, po.delete_all_product );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-06
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多