1 回答
TA贡献1789条经验 获得超8个赞
在currentIndex
您使用的实际上是当前索引的多个输入容器是。
例如,如果您有5
输入并且删除1
当前索引 will 4
,则它不是已删除行的索引,因此这意味着currentIndex
不是该行的实际索引,而是容器中的总行数,如果您期望如果您从总行数中删除第 3 行,5
它应该返回 3/2(取决于0
或的起始索引1
),那么您错了。
我无法通过获取元素/行的实际行 id 来猜测您实际想要完成什么,尽管您可以这样做,但在此之前您需要了解一些内容。
将以下列表分别视为容器内的行和索引。
| IDX | Element | ID
| 1 | input | email-1
| 2 | input | email-2
| 3 | input | email-3
| 4 | input | email-4
| 5 | input | email-5
如果删除最后一行,新索引将与之前相同,这在逻辑上应该是可以的。
| IDX | Element | ID
| 1 | input | email-1
| 2 | input | email-2
| 3 | input | email-3
| 4 | input | email-4
但是如果您删除第一行,并且您期望在删除第一行后,其余索引将保留以前的索引,如下所示,
| IDX | Element | ID
| 2 | input | email-2
| 3 | input | email-3
| 4 | input | email-4
| 5 | input | email-5
不,删除后索引会被重置,如果每次删除第一个元素,你总是得到索引1。
因此,如果您仍想获取已删除行的行号,则应使用row参数和.index()函数,该row参数将具有将要删除的行的对象。
注意:以下示例使用的是基本的单列,请相应地调整您的脚本
$js = <<<JS
jQuery('#wtabularbotellas').on('beforeDeleteRow',function(e, row,currentIndex) {
//the index of the row removed
let removedIndex= row.index();
//id of the input inside
let inputId = row.find(':input').attr('id');
console.log("Index removed====>"+removedIndex, "Input id of the removed row input====>"+inputId);
});
JS;
$this->registerJs($js, \yii\web\View::POS_READY);
添加回答
举报