Home  >  Article  >  Backend Development  >  A module to dynamically add drop-down selection boxes based on layui

A module to dynamically add drop-down selection boxes based on layui

不言
不言Original
2018-08-25 10:51:098024browse

The content of this article is about the module for dynamically adding drop-down selection boxes based on layui. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

I just came into contact with layui this week and saw its modularity, so I started to make a select. I won’t say much about the practice of selecting and pulling. I will post the code below. Please point out any deficiencies.

/**
 * 基于layui扩展一个动态添加下拉选择框模块
 */
layui.define(['form', 'jquery'], function(exports) { //提示:模块也可以依赖其它模块,如:layui.define('layer', callback);
var form = layui.form;
var jquery = layui.jquery;
function selectDropDown() {
/**
 * 生成uuid 
 * @param {len} 长度
 * @param {radix} 进制 如 2,10,16
 */
this.uuid = function(len, radix) {
var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
var uuid = [],
i;
radix = radix || chars.length;
if(len) {
// Compact form
for(i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
} else {
// rfc4122, version 4 form
var r;
// rfc4122 requires these characters
uuid[8] = uuid[13] = uuid[18] = uuid[23] = &#39;-&#39;;
uuid[14] = &#39;4&#39;;
// Fill in random data. At i==19 set the high bits of clock sequence as
// per rfc4122, sec. 4.1.5
for(i = 0; i < 36; i++) {
if(!uuid[i]) {
r = 0 | Math.random() * 16;
uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
}
}
}
return uuid.join(&#39;&#39;);
}
this.init = function(opts) {
opts = jQuery.extend({
target: &#39;&#39;,
options: [],
onSelect:function(){}
}, opts || {});
var uuid = this.uuid(8, 16);
var target = jquery(opts.target);
target.addClass(&#39;layui-form&#39;);
target.attr(&#39;lay-filter&#39;, "select"+uuid);
var original = target.attr(&#39;data-original&#39;);
var currentValue = target.attr(&#39;data-value&#39;);
var domSelect = jquery(&#39;<select/>&#39;);
domSelect.attr(&#39;lay-filter&#39;, "domSelect"+uuid);
for(var i = 0; i < opts.options.length; i++) {
var o = opts.options[i];
var domOption = jquery(&#39;<option/>&#39;);
domOption.text(o.text);
domOption.val(o.value);
if(original === o.value.toString()) {
domOption.attr(&#39;selected&#39;, &#39;selected&#39;);
}
domSelect.append(domOption);
}
target.append(domSelect);
form.on("select(domSelect"+uuid+")", function(data) {
target.attr(&#39;data-value&#39;,data.value);
opts.onSelect(data);//下拉选中后回调
});
form.render(&#39;select&#39;, "select"+uuid);//刷新渲染
}
}
//输出select接口
exports(&#39;select&#39;, selectDropDown);
});

Use When
html part

<div style="width: 300px; margin-right: 20px;" id="sex" data-original="女" data-value="女"></div>
 data-original 初始值
 data-value 下拉选中的值
js
layui.use([&#39;select&#39;], function() {
 var select = layui.select; 
 var sexOptions = [
 {text:&#39;男&#39;,value:"男"},
 {text:&#39;女&#39;,value:"女"}
];
var sexSelect = new select();
sexSelect.init({target:&#39;#sex&#39;,options:sexOptions});
});

Related recommendations:

jquery implements secondary linkage drop-down selection based on layui

How to link the js drop-down selection box and the input box to add the selected value to the input box_javascript skills

The above is the detailed content of A module to dynamically add drop-down selection boxes based on layui. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn