1.如果准确判断是否是数字我现在写的判断如下
View上写的Scriptif (!e.target.value.match(/^\d.*$/)) {
e.target.value = '';
}我发现如果前后是数字,中间是其它字符的时候这个判断就不好用了
求助还有啥判断可用?
需求是,输入框里只能输入数字,若输入其它则空
View上的输入框如下 <td style="background-color:#e9ecef" id="xxxxx@i">
<div class="bg-disable-text">
@Html.TextBoxFor(model => (model.xxx[i].yyyyy), new { @Value = Model.xxx[i].yyyyy, @type = "number", @class = "form-control m-0 col-md-12", @maxlength = "7" })
</div>
</td>
2.如何显示三位一逗号
输入框还是上面那个输入框
由于是输入金额,因此需要显示三位1逗号.另外,由于关系到计算,我需要能正常使用数据进行计算(我怕加了逗号就不能用于计算了)
目前代码如下,但是存在以上我的问题.
求如何解决.View 上写的script document.addEventListener('change', function (e) { var getId = e.target.id;
var text = $("#" + getId);
text[0].value = e.target.value; // 行No取得
var searchvalue1 = "[";
var searchvalue2 = "]";
var name = e.target.name;
var index = name.indexOf(searchvalue1) + 1;
var index2 = name.indexOf(searchvalue2);
var rownum = name.substr(index, index2 - index); //行No //金额变更
if (e.target.name.slice(-29) == "XXXXXXXXXX") { var tmoId = getId.substr(0, getId.indexOf("__")) //某一览内项目名
var aaa = $("#" + tmoId + "__YYYYYYYY");
//某一览内sum项目名
var sum = $("#" + tmoId + "__SSSSSSSS"); //若输入不是数字则付空
if (!e.target.value.match(/^\d.*$/)) {
e.target.value = '';
} //计算总价
var times = Number(aaa[0].value) * Number(e.target..value);
sum[0].value = times;
$("#ssssssss_" + rownum)[0].innerText = times;
}
View上写的Scriptif (!e.target.value.match(/^\d.*$/)) {
e.target.value = '';
}我发现如果前后是数字,中间是其它字符的时候这个判断就不好用了
求助还有啥判断可用?
需求是,输入框里只能输入数字,若输入其它则空
View上的输入框如下 <td style="background-color:#e9ecef" id="xxxxx@i">
<div class="bg-disable-text">
@Html.TextBoxFor(model => (model.xxx[i].yyyyy), new { @Value = Model.xxx[i].yyyyy, @type = "number", @class = "form-control m-0 col-md-12", @maxlength = "7" })
</div>
</td>
2.如何显示三位一逗号
输入框还是上面那个输入框
由于是输入金额,因此需要显示三位1逗号.另外,由于关系到计算,我需要能正常使用数据进行计算(我怕加了逗号就不能用于计算了)
目前代码如下,但是存在以上我的问题.
求如何解决.View 上写的script document.addEventListener('change', function (e) { var getId = e.target.id;
var text = $("#" + getId);
text[0].value = e.target.value; // 行No取得
var searchvalue1 = "[";
var searchvalue2 = "]";
var name = e.target.name;
var index = name.indexOf(searchvalue1) + 1;
var index2 = name.indexOf(searchvalue2);
var rownum = name.substr(index, index2 - index); //行No //金额变更
if (e.target.name.slice(-29) == "XXXXXXXXXX") { var tmoId = getId.substr(0, getId.indexOf("__")) //某一览内项目名
var aaa = $("#" + tmoId + "__YYYYYYYY");
//某一览内sum项目名
var sum = $("#" + tmoId + "__SSSSSSSS"); //若输入不是数字则付空
if (!e.target.value.match(/^\d.*$/)) {
e.target.value = '';
} //计算总价
var times = Number(aaa[0].value) * Number(e.target..value);
sum[0].value = times;
$("#ssssssss_" + rownum)[0].innerText = times;
}
第二个 百度 js货币格式 vue里面是有封装好的 所以我也一时半会想不起来怎么写
我先分享下目前的状态吧
逻辑正则是搜的,啥意思我也没懂,适当根据自身情况改了下(比如:金额不需要小数点及后两位)1.View的输入框改成了text,因为我发现 number不能显示带逗号的数值.(不知道是否是我自己方式有问题) <td style="background-color:#e9ecef" id="xxxxxx@i">
<div class="bg-disable-text">
@Html.TextBoxFor(model => (model.aaaaaa[i].BBBBBB), new { @Value = string.Format("{0:N0}", Model.aaaaaa[i].BBBBBB), @type = "text", @class = "form-control m-0 col-md-12", @maxlength = "7" })
</div>
</td>
第一个就是常用的 匹配正浮点数的正则
第二个 百度 js货币格式 vue里面是有封装好的 所以我也一时半会想不起来怎么写
很感谢你的回复,让我有思路.
关于第一个,我发现输入 2a2,它也会判断为正确.
首先,我发现输入框的类型是 Number 的时候 是不能显示逗号的.
需要把类型改成 text 或者 tel如下所示:(一览里表示的时候用 string.Format("{0:N0}", bbbb) 格式化下 <td style="background-color:#e9ecef" id="xxxx_@i">
<div class="bg-disable-text">
@Html.TextBoxFor(model => (model.aaa[i].bbbb), new { @Value = string.Format("{0:N0}", Model.aaa[i].bbbb), @type = "tel", @class = "form-control m-0 col-md-12", @maxlength = "7", @onpaste = "return false" })
</div>
</td>鼠标点击输入框的时候,想让框里带逗号的数值,去掉逗号.
就用鼠标按下事件进行编辑
如下所示
document.addEventListener('mousedown', function (e) {
try {
if (e.target.name.slice(-4) == "aaaa"
|| e.target.name.slice(-4) == "bbb"
|| e.target.name.slice(-4) == "ccc"
|| e.target.name.slice(-4) == "ddd") { e.target.value = e.target.value.replace(",", ""); }
}
catch (e) {
return;
}
});
用键盘按下事件禁止数字外的值输入 document.addEventListener('keypress', function (e) {
try {
if (e.target.name.slice(-4) == "aaaa"
|| e.target.name.slice(-4) == "bbbb"
|| e.target.name.slice(-4) == "cccc"
|| e.target.name.slice(-4) == "dddd") { if (((e.keyCode < 48) || (e.keyCode > 57)) && (e.keyCode != 8)
&& (e.keyCode != 9)) {
window.event.returnValue = false;
}
}
}
catch (e) {
return;
}
});由于我的需求不需要小数点,
因此关于正则表达式继续使用我原来的样式
其它我找到的正则表达式(可以带小数点的)
目前都没有能完美匹配数字的...这是个课题继续刚才的处理
输入框里输入完数字后,
要在失去光标的时候再次编辑带逗号
事件是[focusout]
如下: function fomart(data) {
var fomart = data.replace(",", "");
fomart = fomart.replace(/^(\d*)$/, "$1.");
fomart = (fomart + "00").replace(/(\d*\.\d\d)\d*/, "$1");
fomart = fomart.replace(".", ",");
var re = /(\d)(\d{3},)/;
while (re.test(fomart))
fomart = fomart.replace(re, "$1,$2");
fomart = fomart.replace(/,(\d\d)$/, ""); return fomart;
}
上述编辑是网上找的,我自己不太会用.
只能说能满足我的需求,我就照搬了.
如果有其它更为便捷的 加逗号的方式 还望告知!!!以上,暂时解决的需求,但还是不够完美.
var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;
var bailPayMoney = $('#bailPayMoney').textbox('getValue');//EasyUI textbox 输入框的取值方式
if (!reg.test(bailPayMoney)){
$.messager.alert({
title : '提示信息!',
msg : '保证金金额的输入格式不正确,请确认!'
});
return ;
}
^-[1-9]\d*$ //匹配负整数
^-?[1-9]\d*$ //匹配整数
^[1-9]\d*|0$ //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$ //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮点数(负浮点数 + 0)