Javascript JS在十进制ad端添加了零

Javascript JS在十进制ad端添加了零,javascript,jquery,Javascript,Jquery,早上好 我想使用JavaScript操作一个数字输入字段,这样,如果只输入一个小数位,就会添加一个零,如果没有小数位,甚至两个 现在我尝试了以下方法: ///html <input type="number" id="netpricePerSeat" name="netpricePerSeat" placeholder="0,00" step=".01" min="2.5&quo

早上好

我想使用JavaScript操作一个数字输入字段,这样,如果只输入一个小数位,就会添加一个零,如果没有小数位,甚至两个

现在我尝试了以下方法:

///html

<input type="number" id="netpricePerSeat" name="netpricePerSeat" placeholder="0,00" step=".01" min="2.5" onchange="endingZeros(this)" onkeyup="endingZeros(this)" onclick="endingZeros(this)" pattern="[0-9]+([\,|\.][0-9]+)?">


///js
  function endingZeros(input) {
    var countDecimals = function(value) {
      if (Math.floor(value) !== value)
        if(value.toString().includes('.'))
          return value.toString().split(".")[1].length || 0;
        if(value.toString().includes(','))
          return value.toString().split(",")[1].length || 0;
      return 0;
    }

    if(!isNaN(input.value) && countDecimals(input) === 1) {
      input.value = input.value + '0';
    }
  }
///html
///js
函数结束零(输入){
var countDecimals=函数(值){
if(数学下限(值)!==值)
if(value.toString().包括('.'))
返回值.toString().split(“.”[1]。长度| | 0;
if(value.toString().包括(','))
返回值.toString().split(“,”[1]。长度| | 0;
返回0;
}
如果(!isNaN(输入值)&&countDecimals(输入)==1){
input.value=input.value+'0';
}
}
不幸的是,这一点并不清楚。
重要的是,在字段中,您应该能够使用逗号或点输入十进制,因为表单应该适用于所有国家/地区。

您好,我相信您需要进行小调整(countDecimals(input.value)


}

您好,我相信您需要一些小的调整(countDecimals(input.value)


}

首先,您应该从
onkeyup
事件中删除处理程序,因为它不允许用户输入第二个十进制字符

然后考虑到
允许您输入字符“e”、“-”和“u”(根据规范,请参阅)

试试这个:

函数结束零(输入){
如果(!isValidInput(输入)){
返回;
}
常量小数=countDecimals(输入值);
如果(小数点=0){
input.value=input.value+'.00';
返回;
}
如果(小数点=1){
input.value=input.value+'0';
返回;
}
返回;
函数countDecimals(val=''){
const formattedVal=String(val).replace(/,/,'.');
if(编号isInteger(formattedVal)){
返回0;
}
返回formattedVal.match(/\.(\d+/)?[1]?.length|0;
}
函数isValidInput(节点){
返回node&!Number.isNaN(node.value)
}
}

首先,您应该从
onkeyup
事件中删除处理程序,因为它不允许用户输入第二个十进制字符

然后考虑到
允许您输入字符“e”、“-”和“u”(根据规范,请参阅)

试试这个:

函数结束零(输入){
如果(!isValidInput(输入)){
返回;
}
常量小数=countDecimals(输入值);
如果(小数点=0){
input.value=input.value+'.00';
返回;
}
如果(小数点=1){
input.value=input.value+'0';
返回;
}
返回;
函数countDecimals(val=''){
const formattedVal=String(val).replace(/,/,'.');
if(编号isInteger(formattedVal)){
返回0;
}
返回formattedVal.match(/\.(\d+/)?[1]?.length|0;
}
函数isValidInput(节点){
返回node&!Number.isNaN(node.value)
}
}

听起来你不应该使用
“type=”number“
看看代码,我已经用过了。猜你漏掉了“not”听起来你不应该使用
“type=”number“
看看代码,我已经用过了。猜你漏掉了“not”它运行得很好,但是当我只输入一个数字时,我怎么能加两个零呢,像这样的
8=>8,00
它运行得很好,但是当我只输入一个数字时,我怎么能加两个零呢,像这样的
8=>8,00
 function endingZeros(input) {
   var countDecimals = function(value) {
    if (Math.floor(value) !== value){
     if(value.toString().includes('.'))
      return value.toString().split(".")[1].length || 0;
     if(value.toString().includes(','))
      return value.toString().split(",")[1].length || 0;
    }
   return 0;
 }

 if(!isNaN(input.value) && countDecimals(input.value) === 1) {
   input.value = input.value + '0';
 }