接上一个问题,当今天重写alert和confirm时发现已经有很多之前写好的调用了,现在都给加上await和async着实不太现实了,能不能原来保持不动情况下实现layui的重写
https://ask.csdn.net/questions/7875810
不使用浏览器原生的prompt,其他层模拟的对话框无法挂起后续js代码执行,原来改写的prompt,最后直接就return返回值了,并不会等待layui.layer.prompt中yes回调执行设置value的值。
所以要用layui的组件模拟prompt输入,click事件中代码必须要改的,async+await是改动最小的,要不用Promise then方法的话得改成这样
'click #sendMail': function (e, value, row, idnex) {
prompt('请输入要发送的邮箱').then(function(mail){
alert(mail)
//...其他代码
})
}
或者回调的形式,和then一样改动
function prompt(title,callback) {
layui.use(['form', 'layer', 'element'], function () {
layui.element.init();
});
layui.layer.prompt({
formType: 2,
title,
area: ['500px', '150px'],
yes: function (index, layero) {
let value = layero.find('.layui-layer-input').val();
callback(value);////
layer.close(index)
}
})
}
'click #sendMail': function (e, value, row, idnex) {
prompt('请输入要发送的邮箱',function(mail){
alert(mail)
//...其他代码
});
}
那你只能是在if 判断下面 用alert了
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!