2

我为我的文本框调用了一个名为 test 的类。当我输入第一个值时,例如第一个值4.,然后突然输出为4.00。我只想限制输入只有两位小数。

$(".test").keyup(function (event) {
    debugger;
    this.value = parseFloat(this.value).toFixed(2);
});
4

5 回答 5

2

对代码的这个小改动可能就足够了:

  this.value = this.value.replace (/(\.\d\d)\d+|([\d.]*)[^\d.]/, '$1$2');

基本上用小数点替换小数点后面的任意位数,并且仅替换前两位数。或者,如果输入了非数字,则将其删除。

于 2013-05-21T09:46:34.647 回答
0

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);
         }
    });
于 2013-05-21T09:34:31.200 回答
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");
    }
});
于 2013-10-18T09:40:17.557 回答
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>    

您可能还应该在更改处理程序上放置一个侦听器,以考虑通过其他方式到达那里的值。

于 2013-05-21T09:52:48.593 回答
0

像这样的东西怎么样:

$(".test").keyup(function (event) {
if ((pointPos = this.value.indexOf('.')) >= 0)
    $(this).attr("maxLength", pointPos+3);
else
    $(this).removeAttr("maxLength");
});

这是一个工作小提琴。

于 2013-05-21T09:24:24.427 回答