我为我的文本框调用了一个名为 test 的类。当我输入第一个值时,例如第一个值4.
,然后突然输出为4.00
。我只想限制输入只有两位小数。
$(".test").keyup(function (event) {
debugger;
this.value = parseFloat(this.value).toFixed(2);
});
我为我的文本框调用了一个名为 test 的类。当我输入第一个值时,例如第一个值4.
,然后突然输出为4.00
。我只想限制输入只有两位小数。
$(".test").keyup(function (event) {
debugger;
this.value = parseFloat(this.value).toFixed(2);
});
对代码的这个小改动可能就足够了:
this.value = this.value.replace (/(\.\d\d)\d+|([\d.]*)[^\d.]/, '$1$2');
基本上用小数点替换小数点后面的任意位数,并且仅替换前两位数。或者,如果输入了非数字,则将其删除。
you can use the maxLength attribute for that, try
$(".test").keyup(function (event) {
var last = $(this).val()[$(this).val().length - 1];
if (last == '.') {
$(".test").attr("maxlength", $(this).val().length+2);
}
});
$(document).on("keyup", ".ctc", function ()
{
if (!this.value.match(/^\s*\d*\.?\d{0,2}\s*$/) && this.value != "") {
this.value = "";
this.focus();
alert("Please Enter only alphabets in text");
}
});
在用户提交表单之前,您不应该担心用户在输入中的内容。你真的不在乎在那之前里面有什么。但是,如果您想警告无效输入,您可以在检测到不合格输入时在屏幕上显示一条消息,例如
<script>
function validate(element) {
var re = /^\s*\d*\.?\d{0,2}\s*$/;
var errMsg = "Number must have a maximum of 2 decimal places";
var errNode = document.getElementById(element.name + '-error')
if (errNode) {
errNode.innerHTML = re.test(element.value)? '' : errMsg;
}
}
</script>
您可能还应该在更改处理程序上放置一个侦听器,以考虑通过其他方式到达那里的值。
像这样的东西怎么样:
$(".test").keyup(function (event) {
if ((pointPos = this.value.indexOf('.')) >= 0)
$(this).attr("maxLength", pointPos+3);
else
$(this).removeAttr("maxLength");
});
这是一个工作小提琴。