table 中 edit 的update方法没有效果

提问 已结 9 245
tx
tx 2019-4-10
悬赏:20飞吻
在table中通过监听edit来判断输入的值 是否符合条件 不符合手动赋值
代码如下:
table.on('edit(test)', function (obj) {
console.log(obj);
if (!(new RegExp("^[0-9]+$").test(obj.value))) {
alert('请输入数字');
// obj.value = 1;
//obj.del();
obj.update({ Manufactor: '1' });
//console.log( obj.update({ Manufactor: '1' }));
}
});
回帖
  • 这个是因为进入你这个edit监听之后,后面实际table还有其他的逻辑处理,等于说你这个不是最后的,所以你在这里这么update进去是没用的,需要将update的逻辑放在一个timeout里面去处理
    0 回复
  • tx
    2019-4-10
    @岁月小偷
    table.on('edit(Result_Drugs_table_body)', function (obj) {
    console.log(obj);
    t1 = window.setTimeout(refreshCount(obj), 1000 * 5);
    });
    function refreshCount(obj) {
    if (!(new RegExp("^[0-9]+$").test(obj.value))) {
    alert('请输入数字');
    // obj.value = 1;
    //obj.del();
    obj.update({ Manufactor: '1' });
    return;
    //console.log( obj.update({ Manufactor: '1' }));
    }
    // window.clearTimeout(t1);
    }
    0 回复
  • tx
    2019-4-10
    @岁月小偷 这样吗? 还是没有效果
    0 回复
  • 不是,需要timeout的只有obj.update(data)这句。可以看看我这个测试页面 https://sun_zoro.gitee.io/layuitableplug/testTableCheckboxDisabled.html?v0.1.9 中edit中关于评分的监听的处理
    0 回复
  • tx
    2019-4-10
    @岁月小偷 有,效果了 感觉怪怪的
    0 回复
  • tx
    2019-4-10
    table.on('edit(Result_Drugs_table_body)', function (obj) {
    console.log(obj);
    if (!t1)
    {
    window.clearTimeout(t1);
    }
    t1 = window.setTimeout(refreshCount, 250,obj);
    });
    function refreshCount(obj) {
    if (!(new RegExp("^[0-9]+$").test(obj.value))) {
    alert('请输入数字');
    obj.update({ Manufactor: '1' });
    }
    window.clearTimeout(t1);
    }
    0 回复
  • tx
    2019-4-10
    table.on('edit(Result_Drugs_table_body)', function (obj) {
    //清除定时器
    if (t1)
    {
    clearInterval(t1);
    window.clearTimeout(t1);
    t1 = null;
    }
    if (!(new RegExp("^[0-9]+$").test(obj.value))) {
    t1 = window.setTimeout(function () {
    obj.update({ Manufactor: 1 });
    layer.msg('数量只能为数字', { anim: 6 });

    }, 100);
    }
    });
    0 回复
  • tx
    2019-4-10
    0 回复
  • @tx 嗯,你可以调整一下100毫秒换成0看看,我记得如果只是单纯的update值的话直接0就可以了,但是我那个是加了一个点击发现0还是有点问题,才调整成100的好像,至于觉得有点怪这个如果理解了timeout的细节的话应该就不会觉得怪了,简单的说就是他是等到空闲的时候延迟多少时间执行,而不是在你写的代码那个地方就开始计时,所以timeout 0不等于立即执行,
    0 回复