我为我的文本框调用了一个名为test的类。当我输入第一个值时,例如第一个值为4.
,然后突然输出为4.00
。我只想限制两位小数的输入。
$(".test").keyup(function (event) {
debugger;
this.value = parseFloat(this.value).toFixed(2);
});
答案 0 :(得分:2)
对代码的这一小改动可能就足够了:
this.value = this.value.replace (/(\.\d\d)\d+|([\d.]*)[^\d.]/, '$1$2');
基本上用小数点和前两位数字替换小数点后跟任意位数。或者,如果输入非数字,则将其删除。
答案 1 :(得分:0)
这样的事情:
$(".test").keyup(function (event) {
if ((pointPos = this.value.indexOf('.')) >= 0)
$(this).attr("maxLength", pointPos+3);
else
$(this).removeAttr("maxLength");
});
Here is一个工作小提琴。
答案 2 :(得分:0)
您可以使用maxLength属性,尝试
$(".test").keyup(function (event) {
var last = $(this).val()[$(this).val().length - 1];
if (last == '.') {
$(".test").attr("maxlength", $(this).val().length+2);
}
});
答案 3 :(得分:0)
在提交表单之前,您不应该担心用户在输入中的含义。在那之前你真的不在乎那里有什么。但是,如果您想警告无效输入,如果您检测到不符合要求的输入,则可以在屏幕上显示一条消息,例如
<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>
你也应该在变更处理程序上放置一个监听器来解释通过其他方式到达那里的值。
答案 4 :(得分:0)
$(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");
}
});