layer弹层点击取消后的回调函数中form.render()失效问题

提问 未结 6 67
鸟儿愿为一朵云
悬赏:20飞吻
版本:layui 2.5.4 浏览器:chrome(76.0.3809.132)
form.on('radio(code)', function(data){
layer.confirm('修改排队号码编码格式前,请确认当前医院无其他格式排队号码!', {
btn: ['确认修改','取消修改'],
icon: 3,
title: '修改排队号码编码格式',
success: function (index, layero) {
$(':focus').blur();
}
}, function (index) {
parent.layer.close(index);
}, function () {
//location.reload();
var Name=data.elem.name,value=data.elem.value;
if(value==true){
$('input[type=radio][name='+Name+'][value=true]').removeAttr("checked");
$('input[type=radio][name='+Name+'][value=false]').attr("checked",true);
window.parent.layui.form.render();
}else{
$('input[type=radio][name='+Name+'][value=true]').attr("checked",true);
$('input[type=radio][name='+Name+'][value=false]').removeAttr("checked");
window.parent.layui.form.render();
}
});

});

想实现点击两个单选按钮中的未选中状态按钮时,弹出确认框提醒是否修改,确认修改则关闭弹窗不进行操作,取消修改则回退操作,将已选中的单选按钮改为之前未选中状态,之前选中的继续选中状态。可是form.render()失效,无法渲染checked效果,如果单独将
$('input[type=radio][name='+Name+'][value=true]').attr("checked",true);
$('input[type=radio][name='+Name+'][value=false]').removeAttr("checked");
form.render();
放在主js中,form.render是可以渲染的,但是放在layer弹层的回调函数中就失效,我本来怀疑是作用域的问题,但是发现无论怎么修改、上网查询都解决不了,希望有大佬帮忙指点一下
回帖
  • 你这个怪怪的,首先当前页面弹框提示要不要修改,关闭也应该是layer.close,不明白为什么要parent,那么修改状态后,应该也直接是form.render,不用去什么parent找,但其实这样写还是不好,重复太多,想你这样去修改状态属性,你可以试试这样,首先你这里单选值为true和false,那么你监听的时候data.value就是true和false, 如果取消,那之前的状态就是var status = !data.value; 然后你可以直接用form.val()去修改值,
    form.val('form',{
    Name: status
    })
    也不用render了
    0 回复
  • @半桶水搬砖工
    var Name=data.elem.name,value=data.elem.value;
    form.val('systemForm',{
    Name: !value
    })
    按照你这种方法改了之后

    和之前一样,值改了,但是并没有成功渲染,class=layui-form-radioed还是没有正确渲染,所以我怀疑是作用域的问题,但是又不知道怎么解决[囧]
    0 回复
  • @鸟儿愿为一朵云 噢噢,忘记了这里拿到的值是字符串,用!会一直都是false的。。。用个判断吧
    var status = (value == 'true')?'false':'true';
    0 回复
  • @半桶水搬砖工
    还是一样呀,值确实是改变了,但是渲染效果没变,class=layui-form-radioed没有正确赋给checked的选项
    0 回复
  • @鸟儿愿为一朵云 不太明白你说的值改变了,渲染效果没变是什么意思,是指你的单选框不会回退?form.val赋值是可以改变的,如果不行,那看看有没有报错,或者这个form拿错了?
    0 回复
  • @半桶水搬砖工 就是F12检查页面属性发现html里input框的checked属性值改了,但是在页面呈现的效果没变,也就是说应该是checked被选中,但是页面中被选中的是没有checked的。到现在也是不行,不报错,form表单也只有一个。所以我取消了这种实现方式,希望以后会有人发现这个问题并解决吧[衰]
    0 回复