【问题标题】:How to make an input to accept only two decimals and have maximum of 10 digits?如何进行输入以仅接受两位小数并最多包含 10 位数字?
【发布时间】:2023-04-04 19:37:01
【问题描述】:

如何使输入只接受两位小数并且最多有 10 位数字?

我使用在onkeypress 激活的函数并获取插入到我的输入中的值的长度。我必须让它接受最多 10 位数字和最多 2 位小数,但是在我输入这 2 位小数之后,我不能引入任何其他数字。例如,如果我有 1234.11,我无法到达 10234.11。

function onlyNumbers(){
if($('#GoalQuestionValue').val().toString().length>10) return false;
if($('#GoalQuestionValue').val().indexOf('.') != -1 && $('#GoalQuestionValue').val().toString().length-$('#GoalQuestionValue').val().indexOf('.') >2) return false;    
}

【问题讨论】:

  • 你的意思是.之前必须最多10位数字,.之后应该最多2数字吗?
  • @MaveRick 最多 10 位数字 = 8+2 小数
  • 尝试使用 keyup 和 keydown 功能,而不是 onclick 或 onchange。
  • 我认为您必须检查按键监听器以进行数字输入。

标签: javascript jquery html restrictions


【解决方案1】:
function onlyNumbers(){
var n = $('#GoalQuestionValue').val().toString().split('.');
if(n[0].length > 8 || n[0].length < 2) return false; else return true;
}

【讨论】:

    【解决方案2】:

    为什么不使用正则表达式来验证此要求:

    if($('#GoalQuestionValue').val().toString().match(/[0-9]{8}\.[0-9]{2}/)!=null &amp;&amp; $('#GoalQuestionValue').val().toString().length&gt;11)

    【讨论】:

      【解决方案3】:

      尝试使用 keyup 和 keydown 函数,而不是 onclick 或 onchange。

      【讨论】:

        【解决方案4】:

        我认为您必须检查 keypress 侦听器的数字输入 -

        $("#GoalQuestionValue").keypress(function (e) {
            if (e.keyCode >= 48 && e.keyCode <= 57) {
                if (!isValidNumberStr(this.value)) return false;
            }
        })
        

        【讨论】:

          【解决方案5】:

          尝试使用事件“onchange”或“oninput”而不是“onclick”。 如果您在谈论算法,我认为这是最好的:

          function onlyNumbers() {
              var myArray = $('#GoalQuestionValue').val().toString().match(/([0-9]*)\.?([0-9]*)?/);
              if(myArray[1]) {
                  if(myArray[1].length > 10)
                      return false;
                  if(myArray[2]) {
                      if( myArray[2].length > 2 )
                          return false;
                      if( myArray[1].length + myArray[2].length > 10)
                          return false;
                  }
                  return true;
              }
              return false;
          }
          

          【讨论】:

          • 抱歉,它在“onkeypress”上。我修改了我的问题。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-08
          • 1970-01-01
          • 2021-12-20
          • 2020-03-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多