【问题标题】:How to restrict textbox that only allow whole numbers specifically thousands?如何限制只允许整数特别是数千的文本框?
【发布时间】:2019-10-15 04:59:03
【问题描述】:

或者甚至可以将输入的数字自动化为特定的千位数? 当客户输入的金额不是千位整数时,文本/输入框会自动将其更改为千位。

喜欢:

11111 变成 10000

23344 变成 20000

50003 变成 50000

输入的数量只能是10000,不能是10500或10003。但允许12000或520000。

文本框/输入框已被限制为字符并自动添加逗号。它还具有特定金额的按钮,每次单击“金额按钮”时都会自动总计。但是如果客户想输入金额,它应该限制非整数(10009)。

<input type="number" class="input-char-amo" id="total" step="10000" value="0" min='10000' max="5000000" onkeypress="return CheckNumeric()" onkeyup="FormatCurrency(this)" (using document.getElementById("id").value) / required>

https://codepen.io/Cilissaaa/pen/OJJXXrJ

【问题讨论】:

    标签: javascript java


    【解决方案1】:

    您可以通过使用一个函数调用来优化它,而不是为每个值显式设置。

    function showOutput(){
        var input = 520007;
        var finVal
        var dividend=10;
        if(input % 10 !==0) {
       let len = (''+input).length;
     for(let i=1;i<len-1;i++){
         dividend=dividend*10;
     }
     let firstDigit=(input/dividend).toString().split(".")[0];
     console.log(firstDigit)
     finVal=dividend*firstDigit;
     console.log(finVal)
        }else{
            console.log(input)
        }
             
        }
    
        showOutput()

    这是输入来自文本框的函数(使用 document.getElementById("id").value),它检查它在哪里可以被 10 整除,如果不是,它将在 for 循环中找到digit ,准备要附加的 0,然后找到数字的第一个数字。

    【讨论】:

      【解决方案2】:

      如果您使用数字类型的输入,您可以设置step 属性:

      &lt;input type="number" step="1000" value="0" min="0" /&gt;

      【讨论】:

      • 这似乎很接近。谢谢!但是如果它自动添加逗号并限制负数,是否也可以?
      • 是的,您可以使用min 排除负数。但是在用户键入时,您应该始终小心操作字段,这在某些情况下可能会破坏可用性。
      • 非常感谢!我已经用你的答案编辑了我的代码,但我还需要让客户输入他们的金额并将输入的金额转换/更改为最接近的整数。我编辑了我的帖子,以便您查看我要解决的问题。如果有不必要的代码,请随时更正。
      • 我还想问一件事。为什么会这样 如果我尝试在输入字段中输入一个数字,它只允许 3 位数字,当它是 4 位数字时会自动清除所有?
      • 不知道。浏览器特定行为
      【解决方案3】:

      请在你的代码上试试这个:

      function showOutput(){
      var output = document.getElementById("num").value
      var finVal
      
      if(output >= 1000 && output <= 1999) {
      finVal = 1000
      }
      else if(output >= 2000 && output <= 2999){
      finVal = 2000
      }
      else{
      finVal = 0
      }
      alert(finVal)
      
      }
      <input type="text" id="num"/>
      <input type="button" onClick="showOutput()" value ="TEST" /> 
      <label id="outputHere">

      【讨论】:

      • 如果我也尝试在输入框中显示更改金额/自动更改金额,是否可以?
      • 当然可以。这只是解决问题的最简单方法之一。你应该指定你的参数。
      • 这行得通,但代码很糟糕。这最终将成为具有大量行的功能,并且将变得完全无法维护。不要在专业环境中使用这种方法。
      猜你喜欢
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 2019-02-23
      • 2013-04-23
      • 1970-01-01
      • 1970-01-01
      • 2020-01-09
      相关资源
      最近更新 更多