⾦额输⼊框的规则----⼩程序+js+jqeury
昨天写⼩程序项⽬,在输⼊⾦额的框上也只是简单的为 input 设置了"type=‘number’";
并设置了⼀定的限制
money.value = place(".","$#$").replace(/\./g, "").replace("$#$", ".");//只允许存在⼀个点
money.value = place(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');//只能输⼊两个⼩数
可惜猝不及防的不⾜——验收:“来⼀个⼿贱的⼈,乱输数字,乱点怎么办?”
00000015.21——虽然结果仍是15.21,但是确实不好看,偷懒是过了点。
所以在此补充⼀波(三者换汤不换药):
//js(原⽣)
var money = ElementById('money');
money.addEventListener('keyup',function () {
money.value = place(".","$#$").replace(/\./g, "").replace("$#$", ".");//只允许存在⼀个点
money.value = place(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');//只能输⼊两个⼩数
写文章的小程序//需要注意$3处(‘\d\d).’)的那个点,见下图
if (money.value.indexOf(".") < 0 && money.value != "") { //此处控制的是如果没有⼩数点,⾸位不能为类似于 01、02的⾦额 money.value = parseFloat(money.value); //parseFloat:字符串中第⼀个⼩数点是有效的,⽽第⼆个⼩数点就是⽆效的了 } else if (money.value.indexOf(".") == 0) {
money.value = place(/[^$#$]/g, "0."); //将. 变为0.
money.value = place(/\.{2,}/g, "."); //只保留第⼀个. 清除多余的
}
})
防⽌多输⼊更改新内容
还有这⾥注意⼀下(仿⾦额输⼊框的点)
//⼩程序:
writePri: function(e) {
e.detail.value = e.place(".", "$#$").replace(/\./g, "").replace("$#$", ".");
e.detail.value = e.place(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3');
if (e.detail.value.indexOf(".") < 0 && e.detail.value != "") {
e.detail.value = parseFloat(e.detail.value);
} else if (e.detail.value.indexOf(".") == 0) {
console.log(1111111111111111111111111111)
e.detail.value = e.place(/[^$#$]/g, "0.");
e.detail.value = e.place(/\.{2,}/g, ".");
}
this.setData({
price: e.detail.value
})
},
//jquery
$('#money').on('keyup',function () {
var val = $(this).val();
$(this).val($(this).val().replace(".","$#$").replace(/\./g, "").replace("$#$", ".").replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2 .$3'));
if (val.indexOf(".") < 0 && val!= "") {
$(this).val(parseFloat($(this).val()));
} else if (val.indexOf(".") == 0) {
$(this).val($(this).val().replace(/[^$#$]/g, "0.")) ;
$(this).val( $(this).val().replace(/\.{2,}/g, "."));
}
})
其实上述并不是很完善,⽽且有多余,在此先做个记录。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论