Layui input赋值/取值时自动换算单位

平时项目中金额,重量等单位数据库一般用分,千克保存,而在前台展示却是用元,吨。这样在给input的赋值/取值每次都要做单位换算很麻烦,修改了layui中form.js的代码以方便此类操作。

//路径
layui/lay/modules/form.js
//赋值
u.prototype.val = function (e, i) {
        var a = this,
            n = t(r + '[lay-filter="' + e + '"]');
        n.each(function (e, a) {
            var n = t(this);
            layui.each(i, function (e, t) {
                var i,
                    a = n.find('[name="' + e + '"]');
                if(a[0]){
                    i = a[0].type;
                    switch (i) {
                        case "checkbox":a[0].checked = t;break;
                        case "radio": a.each(function () {this.value == t && (this.checked = !0)});break;
                        default:
                            switch ($(a).attr("valueType")) {
                                case"money":a.val(parseFloat((t||0)/100).toFixed(2));break;
                                case"ton":a.val(parseFloat((t||0)/1000).toFixed(3));break;
                                default:$(a[0]).val(t);break;
                            }
                    }
                }
            })
        });
        f.render(null, e);
        return a.getValue(e)
    };
//取值
u.prototype.getValue = function (e, i) {
        i = i || t(r + '[lay-filter="' + e + '"]').eq(0);
        var a = {}, n = {}, l = i.find("input,select,textarea");
        layui.each(l, function (e, t) {
            t.name = (t.name || "").replace(/^\s*|\s*&/, "");
            if (t.name) {
                if (/^.*\[\]$/.test(t.name)) {
                    var i = t.name.match(/^(.*)\[\]$/g)[0];
                    a[i] = 0 | a[i];
                    t.name = t.name.replace(/^(.*)\[\]$/, "$1[" + a[i]++ + "]");
                }
                if(/^checkbox|radio$/.test(t.type)){
                    if(t.checked){
                        if(n.hasOwnProperty(t.name))
                            n[t.name]=n[t.name]+","+t.value;
                        else
                            n[t.name] = t.value;
                    }
                }else{
                    switch ($(t).attr("valueType")) {
                        case"money":n[t.name]=parseFloat((t.value||0)*100).toFixed(0);break;
                        case"ton":n[t.name]=parseFloat((t.value||0)*1000).toFixed(0);break;
                        default:n[t.name]=t.value;break;
                    }
                }
            }
        });
        return n
    };

使用方法

<form class="layui-form" lay-filter="tempForm">
	<div class="layui-col-md4">
    	<div class="layui-form-item">
        	<label class="layui-form-label">单价</label>
            <div class="layui-input-block">							<!--加上自定义属性‘valueType’-->
            	<input name="unitPrice" class="layui-input" autocomplete="off" valueType="money">
			</div>
		</div>
	</div>
</form>	 
<script>
layui.config({base:'/'}).use(['form'],function(form){
	form.val('tempForm',{unitPrice:10000});
})
</script>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值