接上一个问题,当今天重写alert和confirm时发现已经有很多之前写好的调用了,现在都给加上await和async着实不太现实了,能不能原来保持不动情况下实现layui的重写
https://ask.csdn.net/questions/7875810
layui.layer.prompt重写原版提示栏
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- CSDN专家-showbo 2023-01-13 10:03关注
不使用浏览器原生的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) //...其他代码 }); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 Attention is all you need 的代码运行
- ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
- ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
- ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
- ¥30 关于<main>标签页面跳转的问题
- ¥80 部署运行web自动化项目
- ¥15 腾讯云如何建立同一个项目中物模型之间的联系
- ¥30 VMware 云桌面水印如何添加
- ¥15 用ns3仿真出5G核心网网元
- ¥15 matlab答疑 关于海上风电的爬坡事件检测