【问题标题】:How to make an input box to accept positive and negative decimal values?如何让输入框接受正负十进制值?
【发布时间】:2020-07-02 06:16:54
【问题描述】:

如何使输入框只接受一个- 符号或一个+ 符号和一个带数字的小数点?

我试过`preventDefault();通过以下代码阻止其他字符:

$('.pndecimal').on('keypress keyup blur', function(e){
         if(e.which< 48 && e.which > 57)
         { 
            e.preventDefault();
         }
    });

我不能允许这些,因为它们超出了数字的 ASCII 代码范围(e.which57)

【问题讨论】:

  • 好吧,我实际上并没有理解为什么,而是使用输入而不是使用 &lt;select&gt; 和您需要的选项? :)
  • 我的要求是记录范围从-50.00到+3.00的光信号
  • 然后可能使用范围-50到+3的输入类型编号和步骤1?这对你有用吗?
  • &lt;input type="number" min=-50 max=3 step=0.1 /&gt; 我猜这样的事情已经限制了你需要的一切
  • 并非所有浏览器都支持最小值和最大值

标签: javascript html jquery inputbox


【解决方案1】:

使用正则表达式验证,如果通过则取值否则显示错误。

例如:/(-|\\+)+[0-9]+\\.[0-9]+/g

有效输入:+9.0、-9.7、+78.9、-10.0

如果你想在小数点后有多个数字而不是使用这个模式(这个模式也允许输入像 -99/,++,--)

例如:/(-|\\+)+[0-9]+\\.[0-9]+/g

有效输入:+91.42、+1.809、-9.0

如果你想限制为 2 个整数,2 个十进制数,任何一个符号使用以下:

RegExp(/(-|\+)+[0-9]+\.[0-9]+/g)

&lt;input type="text" maxlength="4"&gt;

【讨论】:

  • 你能提一下正则表达式的正确用法吗?为了使它适合像.pndecimal这样的特殊课程@
  • 结果只给我-2.8...为什么要避免9? var pat= /[-+]\d*.[0-9]/g; var txt= "-2.89"; var result = txt.match(pat);
  • var pat = /(-|\+)+\d*.[0-9]/g;更新模式,试试这个 pat.test(txt);例子:pat.test('+91.2'); // 输出:真。 pat.test('90.7'); // 输出:假 pat.test('18'); // 输出:假 pat.test('-21.2'); // 输出:真。 ref:w3schools.com/jsref/tryit.asp?filename=tryjsref_regexp_test2 注意:替换pattern和txt并在上面的网站上签到
  • 如果您想在小数点后有多个数字,请使用此模式 /(-|\+)+\d*.[0-9]+/g
  • 我已经更新了正则表达式,请使用它 /(-|\+)+[0-9]+\.[0-9]+/g
猜你喜欢
  • 1970-01-01
  • 2019-07-24
  • 1970-01-01
  • 2020-10-15
  • 2013-07-22
  • 2022-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多