Button yii2按钮点击事件在数据确认消息之前

Button yii2按钮点击事件在数据确认消息之前,button,yii2,click,confirm,Button,Yii2,Click,Confirm,我在datagrids中使用了带有Html::a标记的data confirm属性,它很有效。但现在我想用一个按钮,像这样: <?php echo Html::button("<span class='icon delete'></span>", [ "class" => "delete", "title" => Yii::t("app-upload-list", "delete"), "data-

我在datagrids中使用了带有Html::a标记的data confirm属性,它很有效。但现在我想用一个按钮,像这样:

    <?php echo Html::button("<span class='icon delete'></span>", [
        "class" => "delete",
        "title" => Yii::t("app-upload-list", "delete"),
        "data-confirm" => Yii::t("yii", "Are you sure you want to delete this item?"),
    ])
 <?php echo Html::button("<span class='icon delete'></span>", [
        "class" => "delete",
        "title" => Yii::t("app-upload-list", "delete"),
        "data" => [
                    'confirm' => 'Are you sure you want to delete this item?',
                    'method' => 'post',
                ],
    ]) ?>

我认为您可以在视图的Yii2模板中找到类似的示例

在我看来,我有以下代码:

 <?= Html::a('Delete', ['delete'], [
            'class' => 'btn btn-danger',
            'data' => [
                'confirm' => 'Are you sure you want to delete this item?',
                'method' => 'post',
            ],
        ]) ?>

我必须承认,我没有尝试将它与Html::button一起使用。但您可以尝试以下方法:

    <?php echo Html::button("<span class='icon delete'></span>", [
        "class" => "delete",
        "title" => Yii::t("app-upload-list", "delete"),
        "data-confirm" => Yii::t("yii", "Are you sure you want to delete this item?"),
    ])
 <?php echo Html::button("<span class='icon delete'></span>", [
        "class" => "delete",
        "title" => Yii::t("app-upload-list", "delete"),
        "data" => [
                    'confirm' => 'Are you sure you want to delete this item?',
                    'method' => 'post',
                ],
    ]) ?>

编辑: 是的,这样不行

建议使用链接(Html::a)并根据需要设置样式。 如果要提交表单,应使用:Html::submitButton()


如果你想使用一个按钮。。。您可以使用Stu在这里提到的jQuery:

我也有同样的问题。这是Yii的听众(Yii.js,第486行):

它使用

事件委派允许我们将单个事件侦听器附加到 父元素,该元素将为匹配 选择器,无论这些子体现在存在还是添加到 未来

在本例中,侦听器被附加到文档节点,该节点正在侦听从单击的元素弹出的单击。放置在可单击元素本身或文档节点的任何子元素上的侦听器将在文档节点上的侦听器之前(即Yii的侦听器之前)触发

为了确保Yii的侦听器在侦听器启动之前启动,您必须像Yii那样将侦听器附加到文档节点;同一节点上的侦听器按注册顺序调用

$(document).on('click', '.delete', yourHandlerFunction);

注意:当您需要为添加侦听器时不一定存在的元素提供侦听器,或者需要侦听单个节点而不是多个节点时,可以使用事件委派。通常建议使用最近的父元素,该元素在添加侦听器时存在,并且在需要时仍然存在。如果没有充分的理由,我不会建议将侦听器放在文档节点上。

即使这是一个老问题,我也愿意贡献我所知道的

如果您想使用
html::button()
而不是
html::a()

这里有一个例子

 <?php echo Html::button("<span class='icon delete'></span>", [
    "class" => "delete",
    "title" => Yii::t("app-upload-list", "delete"),
    "onclick" => 'if(confirm("Are you sure you want to delete this item?")){
                     return true;
                    }else{
                     return false;
                    }',
]) ?>

是的,我得到了相同的例子,但是对锚有效的东西对按钮无效。但是数据确认属性触发确认框,所以我认为它必须以某种方式工作。我编辑了我的答案。如果还没有解决,我希望这能帮助你。