原文链接:https://www.jianshu.com/p/65fea33e6750

我们都知道layer.prompt官网上的例子是一个弹出框,那么有没有可能出来多个呢,当然是可以的

1.首先增加需要的输入框

源码不好改动,咱们可以直接js增加呀,$().append()方法还是很好用的
话不多说上代码

layer.prompt({
formType: 2,
placeholder: '输入注销原因',
title: '请输入值',
// area: ['800px', '350px'] //自定义文本域宽高
}, function(value, index, elem){ // alert(value); //得到value
layer.close(index);
});

这个是官网上的例子相比都可以找得到,想要动态加入内容,首先咱需要找准目标,浏览器调试工具走起

 
image.png

可以发现代码时分的简洁,这样就更好添加了
这样动态增加的代码也就出来了

$(".layui-layer-content").append("<br/><input type=\"text\" id= \"zxr\" class=\"layui-input\" placeholder=\"输入注销人\"/>")

这里我增加了一个<input>输入框,给了一个id这样使用的时候可以找的到,class就不要起名和自带的一样了,这里我用了一个layui的表单的元素,具体啥原因下边分析到点击确定的回调会说明。但是鉴于没有<form>标签包裹 应该然并卵。但是为了美观还是中间空了一行,看看结果啥样吧

 
image.png

可以发现鲜果还是不错的,但是我感觉上边的<textarea>中的value属性不好,客户要填写时还得删除,如果能像下边的<input>标签就好了,不过查阅了API没有这么个属性,得嘞,修改下代码吧。

2.增加placeholder属性

由于js文件都是压缩的,咱们可以使用IDE格式化一下,要不然头都大了。
代码如下

 
image.png

稍微分析下,我们找到了主要的添加dom内容的代码

l = 2 == e.formType ? '<textarea class="layui-layer-input"' + a + ">" + (e.value || "") + "</textarea>" : function () {
return '<input type="' + (1 == e.formType ? "password" : "text") + '" class="layui-layer-input" value="' + (e.value || "") + '">'
}()

大概是说(本人js比较渣):如果formType属性值为2添加<textarea>标签,否则调用一个函数,当然这个函数也是为了返回其他的情况下的<input>标签,那咱都给添加下吧

添加的代码如下:

placeholder="'+(e.placeholder || '')+'"

然后形成的代码像这个样子

 
image.png

代码好些 主要就是看清楚这复杂的双引号和单引号
这样咱们就可以修改前端的代码了

layer.prompt({
formType: 2,
placeholder: '输入注销原因',
title: '请输入值',
// area: ['800px', '350px'] //自定义文本域宽高
}, function(value, index, elem){ // alert(value); //得到value
layer.close(index);
}); $(".layui-layer-content").append("<br/><input type=\"text\" id= \"zxr\" class=\"layui-input\" placeholder=\"输入注销人\"/>")

页面效果如下图

 
image.png

OK 大功告成。不过又出现了个问题,本来咋样也该给咱个值的吧,但是没填写的时候发现,啥反应都没有,
代码如下:

function(value, index, elem){
/* if(value===""){
layer.msg("请填写注销原因")
return;
}
*/
if($('#zxr').val()===""){
layer.tips("请填写注销人",$('#zxr'));
return;
}
// alert(value); //得到value
layer.close(index);
}

这就尴尬了,控制台也没出错,应该是代码的问题了。

3.修改未填写时的提示方式

再次找到刚才的那部分代码:
就是这段yes函数了,

yes: function (i) {
var n = s.val();
"" === n ? s.focus() : n.length > (e.maxlength || 500) ? r.tips("最多输入" + (e.maxlength || 500) + "个字数", s, {tips: 1}) : t && t(n, i, s)
}

握草,原来为空的时候,就直接s.focus()了,这个s,从上边可以找到就是

success: function (e) {
s = e.find(".layui-layer-input"), s.focus(), "function" == typeof f && f(e)
}

就是自动添加的那个输入框嘛,这也就是咱们自己添加的输入框的class不用layui-layer-input的原因了,而且可以看出来这个success函数就是页面加载好执行的,这样咱们其实也可以将添加自定义的输入框的方法写在success这个属性中。这里就不试了,见好就好哈哈。

回到正题,既然找到了,就修改下等于空时的函数吧,就在旁边出来个tip吧。
修改后的代码如下:

"" === n ? layer.tips(e.placeholder||'请填写内容',s) : n.length > (e.maxlength || 500) ? r.tips("最多输入" + (e.maxlength || 500) + "个字数", s, {tips: 1}) : t && t(n, i, s)

主要就是这段了

layer.tips(e.placeholder||'请填写内容',s)

也可以专门写个属性,设置没填写的提示。

完整页面代码如下:

layer.prompt({
formType: 2,
placeholder: '输入注销原因',
title: '请输入值',
// area: ['800px', '350px'] //自定义文本域宽高
}, function(value, index, elem){
/* if(value===""){
layer.msg("请填写注销原因")
return;
}
*/
if($('#zxr').val()===""){
layer.tips("请填写注销人",$('#zxr'));
return;
}
// alert(value); //得到value
layer.close(index);
}); $(".layui-layer-content").append("<br/><input type=\"text\" id= \"zxr\" class=\"layui-input\" placeholder=\"输入注销人\"/>")

页面效果如下:

 
image.png
 
image.png

然后再写其他逻辑就可以啦

 
 

2人点赞

 
layui

 

layer.prompt添加多个输入框的更多相关文章

  1. layer系列之弹层layer.prompt

    layer官网:https://www.layui.com/doc/modules/layer.html layer在线调试:http://layer.layui.com/ 如何使用layer.pro ...

  2. 如何在使用layer.prompt在输入值为空的情况下点击确定继续执行逻辑?

    突然发现在使用LayUI时,用到弹出层layer.prompt时,如果文本框输入值是空的话点击确定没有反应,不能向下执行. 但是我又需要在这种情况下去继续执行判断或逻辑时该怎么做?? 示例:原代码如下 ...

  3. 怎样验证layer.prompt输入的值为数值型???

    JS中使用isNaN()判断layer.prompt输入的值为数值型,代码如下: layer.prompt({ title: '设置比值', }, function(value, index, ele ...

  4. JS中通过LayUI的layer.prompt弹出文本输入层,多个按钮回调获取输入值

    JS中通过LayUI弹出文本输入层,多个按钮回调: 如图所示,输入文本后点击通过/不通过按钮回调获取输入文本值的实现: 实现JS: layer.prompt({ formType: 2, // 弹出文 ...

  5. [PHP] JQuery+Layer实现添加删除自定义标签代码

    JQuery+Layer实现添加删除自定义标签代码 实现效果如下: 实现代码如下: <!doctype html> <html> <head> <meta c ...

  6. layer.prompt绑定确认键

    case 'eventkc': top.layer.prompt({ formType: , title: '修改<span style="color:red">' + ...

  7. element+vue点击新增表格内在已有数据添加一行带输入框内容

    在element+vue项目中,需求要表格内已有数据,点击新增在首行添加一行带输入框内容 table的数据为datas=[],那么下面是一列的数据,多列可循环或复制 <el-table-colu ...

  8. openlayer 3 在layer上添加feature

    首先获取layer的source,所以你的source里就先要有内容. vectorLayer.getSource().addFeature(iconFeature); 如果source里面没有定义过 ...

  9. C# 操作PDF 图层(Layer)——添加、删除图层、设置图层可见性

    前言 通过添加图层,我们可以将文本.图片.表格.图形等元素精确定位于页面指定位置,将这些元素进行叠放.组合形成页面的最终效果.此外,对于页面中已有的图层我们也可以进行设置图层可见性.删除图层等操作.因 ...

随机推荐

  1. AtCoder Grand Contest 015题解

    传送门 \(A\) 找到能达到的最大的和最小的,那么中间任意一个都可以被表示出来 typedef long long ll; int n,a,b;ll res; int main(){ scanf(& ...

  2. (27)打鸡儿教你Vue.js

    v-for 数组参数的顺序 当含有index时,以前传递的参数顺序是: (index, value).现在(value, index) ready替换使用新的mounted钩子代替,通过使用mount ...

  3. (13)打鸡儿教你Vue.js

    一小时复习 vue.js是一个JavaScriptmvvm库,是以数据驱动和组件化的思想构建的,相比angular.js,vue.js提供了更加简洁,更加容易理解的api,如果习惯了jquery操作d ...

  4. 一个简单的setTimeout的问题

    经常使用 setTimeout,并且自己认为也算比较熟悉这个函数的用法. 不过今天碰到了,突然发现自己没有意识到这个问题.于是作为一个记录点,进行巩固一下. var timer = window.se ...

  5. 本地spark下保存rdd为文件

    写随笔大概也是做笔记记录下自己思考的意思吧,之前有些事情觉得做随笔还是比较有用的,mark一下一个有用的网址 关于rdd的操作,网上有很多很多的教程,当初全部顺一遍,除了对rdd这个类型有了点概念,剩 ...

  6. Cayley-Hamilton定理与矩阵快速幂优化、常系数线性递推优化

    原文链接www.cnblogs.com/zhouzhendong/p/Cayley-Hamilton.html Cayley-Hamilton定理与矩阵快速幂优化.常系数线性递推优化 引入 在开始本文 ...

  7. goland 安装破解

    链接:https://pan.baidu.com/s/1vH70CHq122RbfwLwbHewjg  密码:zilv 复制如下注册码: 56ZS5PQ1RF-eyJsaWNlbnNlSWQiOiI1 ...

  8. "中国东信杯"广西大学第二届程序设计竞赛 - H - Antinomy与伊尔美格

    题意:给一个有向图,n个点m条边,每个点有点权xi.规定从u点出发,到指定的k个点之一结束,可以多次经过同一个点和同一条边,求路径上点权和的最大值. 题解:直接缩点变成DAG,然后dp的时候并不是直接 ...

  9. 4、vueJs基础知识04

    简单的目录结构: |-index.html |-main.js 入口文件 |-App.vue vue文件(组件),官方推荐命名法(首字母大写) |-components      组件存放的文件夹 | ...

  10. elasticsearch routing

    当索引一个文档的时候,文档会被存储到一个主分片中. Elasticsearch 如何知道一个文档应该存放到哪个分片中呢?当我们创建文档时,它如何决定这个文档应当被存储在分片 1 还是分片 2 中呢?首 ...