输入字段应接受数字和小数而不是减号

时间:2018-01-06 11:48:34

标签: html css angular

输入字段应允许数字和小数而不是减号

<input type="number" pattern="[^[0-9]([.,][0-9]{1,3})?$]*">

5 个答案:

答案 0 :(得分:1)

好的,我得到了你的问题。请查看"Allowing decimal values"部分。为了使输入字段type="number"能够处理小数,您需要更改步骤属性。

这是否按预期工作?

&#13;
&#13;
First try:
<input type="number" pattern="\d+[.,]?\d+" step="0.001">

Second Try:
<input type="text" pattern="\d+|\d+[.,]\d{1,3}">
&#13;
&#13;
&#13;

我建议你摆脱type=number属性。您已经为输入设置了pattern属性,除非您确实要将滚动保持为正或负一步,我设置type="text"

答案 1 :(得分:0)

试试这个:

  <input type="number" pattern="/^[0-9.,]+$/">

答案 2 :(得分:0)

您正在寻找可读且易于理解的代码,然后这对您来说非常有用:

&#13;
&#13;
function checkDecimalDot(e)
 {
    var charCode = (e.which) ? e.which : e.keyCode;
    if (charCode != 46 && charCode > 31 
       && (charCode < 48 || charCode > 57))
    return false;

}
&#13;
<input type="number" onkeypress="return checkDecimalDot(event)" >
&#13;
&#13;
&#13;

答案 3 :(得分:0)

这个简单的代码允许您只添加没有任何负值的小数和数字。

<input type="number" min="0"  step="0.001">

答案 4 :(得分:0)

已经完成了!使用以下代码

@HostListener('keypress') onkeypress(e) {
    let event = e || window.event;
    let charCode = (event.which) ? event.which : event.keyCode;
    let value : any = this.elementRef.nativeElement.value.replace(/[^0-9\.]/g, '');

    if ((event.which != 46 || value.indexOf('.') != -1) 
         && (event.which < 48 || event.which > 57)) {
      event.preventDefault();
    }
}