【问题标题】:Two confirm dialogs when deleting删除时的两个确认对话框
【发布时间】:2014-08-01 14:49:57
【问题描述】:

我有一个CMenu 代码,当我尝试删除一个项目时会触发两个确认对话框。

这就是我的CMenu 代码的样子:

$this->widget('zii.widgets.CMenu', array(
    'items'=>array(
        array('label'=>'List things', 'url'=>array('list')),
        array('label'=>'Delete thing', 'url'=>'#', 'linkOptions'=>array(
            'submit'=>array(
                'delete',
                'id'=>$model->thingID
            ),
            'confirm'=>'Are you sure?'
        )),
    ),
    'htmlOptions'=>array(
        'class'=>'divided'
    )
));

我在这段代码中遗漏了什么吗?为什么确认对话框会触发两次?

编辑:

问题是由 skel-panel 内部的某些东西引起的,但我无法找出究竟是什么原因造成的。任何想法如何在 skel-panel 中禁用 href 跟踪?

编辑 2:

我找到了问题的根源,但我不确定如何解决它。事情是 skel-panel 将整个 body 包裹在一个 div 中。奇怪的是,它显然可以处理所有hrefs 的点击。

initObjects 函数是包装所有内容的函数(此处为 https://github.com/n33/skelJS/blob/master/src/skel-panels.js

编辑 3:

好的,我发现了错误。它是在 jQuery 的某个地方引起的,它在 1.8.3 和 1.9.0 之间得到了修复。

我在哪里可以获得这两个版本之间的错误/修复/补丁的详细日志,以便我可以只挑选我感兴趣的更改? (因为我负担不起升级到 jQuery 1.9.x 所需的时间)

【问题讨论】:

  • 我将该代码复制到我的模型的actionView() 中,它运行良好,只发出一次警报
  • 所以你的意思是它只在actionAdmin() 发出两次警报。
  • 到目前为止我尝试过的所有操作中,它只发出一次警报。
  • 你说得对,这个 bug 是由 skel-panels(一个 JS 库)中的一些问题引起的。

标签: php jquery yii


【解决方案1】:

我认为它出现了两次,因为从 CMenu 调用 delete 已经自动触发对话框。尝试删除

'confirm' => 'Are you sure?'

【讨论】:

    【解决方案2】:

    嗯,这发生在我身上一次。我不记得为什么。

    • 您是否有在同一页面上有多个删除按钮?
    • 你是否有任何其他元素可能具有与删除按钮相同的 ID(Yii 有时会为 Yw0Yw1 等元素提供默认 ID,但有时是因为以您构建视图的方式,它可能会为两个元素提供相同的 ID,因此您可能会获得两个操作,因为会有两个侦听器“侦听”单击或更改事件)。

    如果这样做,您可能需要为每个事件添加一个唯一 id,以便一次单击不会触发多个事件(即其他删除按钮的事件)。

    试试这个:

    ...
    ),
      'id' => uniqid('foobarbaz'), 
      'confirm'=>'Are you sure?'
    )),
    ...
    

    【讨论】:

    • 只有 1 个删除按钮,但我也尝试了 id 的东西,结果相同。消息一直显示两次。
    • 但是有两个菜单吗?也许另一个链接在单击时会触发提交操作?这里的问题是 Yii 为小部件分配像 yw0yw1 这样的名称,这样每个小部件都有不同的名称,但有时它不起作用......只要确保没有其他元素(可能在网格中,例如)可能也在监听click 事件。看起来有两个函数正在监听该事件,这可能就是您看到两个警报的原因。
    • 好的,我会检查是否还有更多项目,但 iirc 只有 2 个项目的 CMenu(一个链接和一个带有删除操作的链接)。
    猜你喜欢
    • 2014-02-16
    • 2017-12-20
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多