Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript或jquery只允许在文本框中输入2个小数点?_Javascript_Jquery - Fatal编程技术网

使用javascript或jquery只允许在文本框中输入2个小数点?

使用javascript或jquery只允许在文本框中输入2个小数点?,javascript,jquery,Javascript,Jquery,我为我的文本框调用了一个名为test的类。当我输入第一个值时,例如第一个值为4.,然后突然输出为4.00。我只想把输入限制在小数点后两位 $(".test").keyup(function (event) { debugger; this.value = parseFloat(this.value).toFixed(2); }); 像这样的东西怎么样: $(".test").keyup(function (event) { if ((pointPos = this.value.

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

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

像这样的东西怎么样:

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

工作小提琴。

您可以使用maxLength属性,请尝试

 $(".test").keyup(function (event) {
        var last = $(this).val()[$(this).val().length - 1];
        if (last == '.') {
            $(".test").attr("maxlength", $(this).val().length+2);
         }
    });

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

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

基本上,用一个小数点和前两位数字替换任何数字后面的小数点。或者,如果输入了非数字,则会将其删除。

在用户提交表单之前,您不必担心用户输入的内容。在那之前你真的不在乎里面有什么。但是,如果您想警告无效输入,如果您检测到不一致的输入,您可以在屏幕上显示一条消息,例如:

<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>    

功能验证(元素){
变量re=/^\s*\d*\.?\d{0,2}\s*$/;
var errMsg=“数字最多只能有两位小数”;
var errNode=document.getElementById(element.name+'-error')
if(errNode){
errNode.innerHTML=re.test(element.value)?“”:errMsg;
}
}


您可能还应该在更改处理程序上设置一个侦听器,以说明通过其他方式获得的值。

我喜欢您的工作。当我达到2位小数
23.45
时,我遇到了问题,我又不能在小数点前插入数字,比如'234.45'。它甚至在删除之前的数字之后decimal@Aioros:Hai代码正在工作。但有一个问题是,输入号码后删除按钮不工作。你知道原因吗?它允许使用字符。您可以发布只允许使用固定小数位数的数字的代码。谢谢
$(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");
    }
});