【问题标题】:re-execute button click after event.preventDefault();在 event.preventDefault() 之后重新执行按钮单击;
【发布时间】:2021-01-07 11:04:27
【问题描述】:

我正在使用 ASP.NET Core Razor Pages 为表动态生成行,并且每一行都有一个没有按钮 ID 的删除按钮。 为一行生成的 HTML 示例:

<button onclick="return DeleteRowConfirm(event);" data-ajax="true" data-ajax-method="GET" data-ajax-begin="AjaxOnBegin" data-ajax-complete="AjaxOnComplete" data-ajax-failure="failed" data-ajax-update="#div_BusyIndicator" href="/ApproveNumber/a10b0c7a?handler=DeleteRow">Delete Row</button>

点击按钮我正在使用 bootbox.js 来确认使用此代码:

function DeleteRowConfirm(e) {
        e.preventDefault();
        bootbox.confirm({
            message: "Delete Row?",
            buttons: {
                confirm: {
                    label: 'Yes',
                    className: 'btn-success'
                },
                cancel: {
                    label: 'No',
                    className: 'btn-danger'
                }
            },
            callback: function (result) {
                if (result === false) {
                
                }
                else {
                    
                  //$(this).trigger(e.type); //Doe not working
                   
                }

            }
        });
    }

如果用户按“是”,我想执行“按钮单击”。 我试过$(this).trigger(e.type);,但它不起作用。

【问题讨论】:

  • 你可以试试$(e.target)而不是$(this)
  • @mousetsil 这还不够。添加一个参数来触发以测试是否创建无限循环。请参阅 jquery 文档
  • $(e.target) 不起作用。

标签: javascript razor-pages


【解决方案1】:

我在@mousetail 和“​​Pooma”的帮助下解决了这个问题,来自这个链接https://stackoverflow.com/a/48018708

我已将按钮元素替换为元素,对于 onclick 我已设置 event.preventDefault(); event.stopImmediatePropagation(); DeleteRowConfirm(event);

在回调为真时的 DeleteRowConfirm 函数中,我已从元素中删除了 onclick,因此它不会随着引导框弹出而循环,而是触发点击事件。

$(e.target).removeAttr('onclick');
$(e.target).trigger(e.type);

【讨论】:

    猜你喜欢
    • 2018-08-11
    • 2023-02-03
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2011-10-08
    • 1970-01-01
    相关资源
    最近更新 更多