本扩展暂时已基本成型, 暂时停止维护!
这是一款扩展了 layui 功能的插件, 能让你的输入框可以变成一个 数字输入框
, 当一个普通的输入框变成了 数字输入框
后, 它就可以完成更多实用的操作了
libs/layui_exts
layui.config
和 layui.base
配置是否正确, 可参考 示例文件
layui.use
来引入扩展! 可参考 示例文件
!> 重要,v2.0.3.20220623
新增 handleEvent
配置项,默认 input,表示实时监听用户输入,可以改为 blur,表示失去焦点时检测数值是否正确!
!> 注意! 从 v1.7.20210623
开始插件支持使用类名批量绑定, 在该版本之前所有版本都是仅且只支持 ID 绑定的!
!> 输入框能输入什么类型的数据扩展已经做了限制, 并不推荐你使用 input[type="number"]
这样的方式来指定这是一个 数字输入框
!> 如果你确定要写成 input[type="number"]
, 那么请注意! 你可能需要自己额外的处理一些事件, 如: mousewheel
鼠标滚轮滚动 或 keypress
当按下了某个键!
仅供学习参考, 请勿无脑复制粘贴照搬照抄.
layui
.config({
// 配置扩展的根目录
base: "./libs/layui_exts/",
})
.extend({
// 做好映射关系
numberInput: "numberInput/js/index",
});
<div class="layui-form">
<div class="layui-form-item">
<div class="layui-form-label">排序号</div>
<div class="layui-input-block">
<!-- 给输入框配置一个ID -->
<!-- 注意! 本扩展不影响你使用原生的属性, 如 readonly -->
<input type="text" placeholder="序号" class="layui-input" id="sort"/>
</div>
</div>
</div>
// 引入扩展
layui.use(["numberInput"], function () {
// 调用扩展
var numberInput = layui.numberInput;
// 使用
numberInput.render("#sort");
});
以下配置下都是有默认值的, 你可以在
numberInput.init(id,opts)
的第二个参数中使用! 即opts
.
大部分可配置项在 v1.5.20210609
开始都可以通过给 DOM 添加 dataset 来配置, 没关系, 我换句人话来说, 就是从 v1.5.20210609
开始, 你可以直接通过如下方式设置属性了!
<input type="text" placeholder="序号" class="layui-input" id="sort" data-max="999" data-min="0" data-step="1"/>
注意 data-max="999"
, data-min="0"
,data-step="1"
就好了! 如此设置等价于如下设置
layui.use(["numberInput"], function () {
// 调用扩展
var numberInput = layui.numberInput;
// 使用
numberInput.init("#sort", {
max: 999,
min: 0,
step: 1,
});
});
!> 注意! js
的优先级要高于 dataset
的优先级! 换言之就是如果你设置了同样的属性, 生效的是 js
里面配置的值!
!> 还有! 如果配置项不是一个单词, 譬如 allowEmpty
= allow
+ Empty
, 如果你想通过 dataset
设置, 那么就必须改为 allow-empty
!
v2.0.3.20220623
添加v2.0.1
开始添加v1.8.20210709
版本添加v1.8.20210709
版本添加v1.0.20210530
版本为: 999999999
v1.1.20210602
版本改为: 19961005
v1.5.20210609
版本恢复为 999999999
即整数
!> 注意! 这个不是参数, 只是结合 step
说明一下
精度
次幂default
layui-icon layui-icon-addition
layui-icon layui-icon-subtraction
!> 注意! 由于 input
本身自带 value
属性, 如果你同时填写了 value
和 data-default-value
, 那么, value
的优先级要比 data-default-value
高!
v1.5.20210609
版本增加!> 如果你准备了解一下事件, 那么请确保扩展版本大于等于 v1.1.20210602
, 因为在该版本之前, 事件托管写的比较 随心情, 懂得都懂...
layui.use(["numberInput", "layer"], function () {
var numberInput = layui.numberInput;
var layer = layui.layer;
numberInput.init("#sort", {
// 事件通常都写在 event 下
// 注意! 你并不是非要全部写上
// 你只要根据自己的实际需要使用即可!
event: {
// 生命周期类
beforeCreated: function () {
},
created: function () {
},
mounted: function () {
},
// 事件监听类
change: function () {
},
input: function () {
},
blur: function () {
},
toMin: function () {
},
toMax: function () {
},
focus: function () {
},
select: function () {
},
keypress: function () {
},
mousewheel: function () {
},
},
});
});
!> 传递参数中 DOM树
是指扩展创建的虚拟 DOM, 如 输入框, 加减按钮, 包裹容器..等
!> 事件监听统一传递参数格式为: 原始Event,谁触发了这个时间,新值是啥,DOM树
, 具体结合上下理解即可!
!> 事件内传递的值都是处理后的值, 跟你输入的值在大部分场景下都没有任何关系! 不要简单理解成, 传递的值=你最开始输入的值!
!> 目前, 事件仅用于监听从而实现业务上特色需求, 暂时无法覆盖本身的处理里逻辑, 举个例子, 你不能利用扩展给你传递 input
事件通过比如 return false
的方式阻止扩展自身的处理逻辑. 如果你真的需要 硬改
扩展默认逻辑, 你 或许 可以通过 DOM树
选中指定的 DOM 来重写逻辑, 但是很显然我并不推荐你这么做...
最简单的粗暴的方式就是直接使用 钞能力, 当然这是您自愿的! 点击可直接查看大图
当然, 如果客观条件不允许, 主观上不愿意, 也无伤大雅嘛! 谁的钱都是自己幸苦挣来的. 除了使用 钞能力, 你还可以通过以下方式支持作者!
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型