table 行select值修改后,触发的事件里面,如何获取行其他元素的值

提问 已结 28 244
阿酷
阿酷 2019-7-9
悬赏:50飞吻
版本:layui 2.5.4 浏览器:Chrome
各位大神,请教个问题。
table动态生成的select,当行里面的select值修改后,触发的事件里面,无法获取这一行里面的其他元素的值,比如text的值。请问,应该如何获取,谢谢!
回帖
  • c299
    2019-7-10
    可以获取select框的父元素tr。然后获取tr 的index索引。再根据索引获取缓存表格的数据
    form.on('select(你的下拉框)', function(data) {
    var selectElem = $(data.elem); //获取下拉框
    var tdElem = selectElem.closest('td'); //父元素td
    var trElem = tdElem.closest('tr'); //父元素tr
    table.cache['你的表格'][trElem.data('index')][‘你想要获得的数据的字段’]
    });
    1 回复
  • 楼上正解[哈哈]
    0 回复
  • 阿酷
    2019-7-10
    @c299 谢谢你的帮忙,可以获取到了。还有个问题,table.cache['你的表格'][trElem.data('index')][‘你想要获得的数据的字段’]这个可以获取到我想要的字段的数据,但是,我如何修改某个字段的值啊?
    0 回复
  • c299
    2019-7-10
    table.cache['你的表格'][trElem.data('index')][‘你想要修改的数据的字段’]  = '修改后的值';
    table.reload('你的表格',{
    data: table.cache['你的表格']
    })
    0 回复
  • 阿酷
    2019-7-10
    @c299 非常感激[good]
    0 回复
  • 阿酷
    2019-7-10
    @c299 再请教个问题啊。

    table reload 之后会把行选项卡的select数据清空了,怎么搞啊!
    0 回复
  • 阿酷
    2019-7-10
    @c299 纠正下啊
    table reload 之后会把行选项卡的select数据恢复到初始值了,不是我修改后的值!
    0 回复
  • c299
    2019-7-10
    @阿酷 模板
    table.render({
    .......
    cols:[[
    ....
    { field:'你的相关字段',title:'', templet:getSelectHtml(), },
    ]]
    })
    function getSelectHtml(){
    return function(d){
    var data = [ .... ]; //你进行填充下拉框的数据
    var html = '<select>';
    layui.each(data,function(index,item){
    var selected = '';
    if( item == d['你的相关字段']) //根据你的字段值判断是否选择
    selected = 'selected';
    html += '<option value="'+'相关值'+'" '+selected+'></option>'
    }
    return html+'</select>';
    }
    }
    函数里对下拉框进行初始值赋值就可以了
    0 回复
  • 阿酷
    2019-7-10
    @c299 跑了下,发现跑的顺序是:先跑了table.render,再跑form.on select,现在在form.on select里面做了table reload,select选择的值会被reload掉的,没有效果啊。
    0 回复
  • 阿酷
    2019-7-10
    @c299 还有啊,在form.on select中,为何不能通过访问dom节点方式寻找呢?
    trElem.find('td[data-field=CapabilityMaturity]').find('div.layui-table-cell').html("11111")
    0 回复