删除时有两个确认对话框

时间:2014-06-11 13:53:07

标签: php jquery yii

我有一个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所需的时间)

2 个答案:

答案 0 :(得分:1)

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

'confirm' => 'Are you sure?'

答案 1 :(得分:0)

嗯,这件事发生在我身上......我不记得为什么。

  • 您是否有机会在同一页面上多个删除按钮?
  • 你有任何其他元素可能与删除按钮具有相同的ID(Yii有时会为Yw0Yw1之类的元素提供默认ID等等但是有时因为你构建你的视图的方式,它可能会给两个元素提供相同的ID,所以你可能会得到两个动作,因为有两个听众会听到点击或更改事件。)

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

试试这个:

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