2017-04-11 82 views
2

无法从(包括点(。))得到原始值当我点击输入<input type="number" id="n" />;在输入的keypress函数上键入某个键。然后键入.,虽然它显示在输入上,但我无法在$('#n').val()中看到.从HTML输入类型编号

例如输入后:123.然后$('#n').val()只返回123

是否有<input type="number" />的任何属性,我可以得到它的raw value这是123.而不是123

$("#n").on("keypress", function(event) { 
 
    console.log($("#n").val()); 
 
});
<script src="https://code.jquery.com/jquery-2.1.4.js"></script> 
 
<input type="number" pattern="[0-9]{1,2}([\.][0-9]{1,2})?" id="n" step="0.01" />

JSbin demo

UPDATE:

  • input必须有类型编号,以允许它仅示出在移动网络上softkeyboard号码输入。
  • 应该检查模式和99.99如下工作:

    1. 当型9 OK //输入:9
    2. 型9 OK //输入:99
    3. 型9 NO,它不匹配模式//输入:99
    4. 然后键入1 NO,它不匹配模式//输入:(。)99
    5. ..Free型输入任何内容,而不是点这里...
    6. 型点(。 )OK //输入:99。
    7. 类型9 OK //输入:99.9
    8. 类型9 OK //输入:99.99
    9. 类型9 NO //输入:(。)99.99

在不检测所有脑干点如何检测连续输入多个.的情况?

+1

使用'keyup'事件 – Satpal

+0

@Satpal:'keyup'不起作用https://jsbin.com/korofateji/1/edit?html,js,console,output – o0omycomputero0o

+2

'123.'是'123' ,你为什么需要这段时间?怀疑你会得到它,因为没有真正的方法来获得原始价值。 – epascarello

回答

0

我早就遇到过这个问题。也许这可以帮助:

$("#n").on("keyup", function(event){ 
 
    var val = $('#n').val(); 
 
    if(event.keyCode == 190) { 
 
    val+='.'; 
 
    } 
 
    console.log(val); 
 
    
 
});
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width"> 
 
    <title>JS Bin</title> 
 
</head> 
 
<body> 
 
<script src="https://code.jquery.com/jquery-2.1.4.js"></script> 
 
<input type="number" id="n" /> 
 
</body> 
 
</html>

+0

唯一的问题会在粘贴的情况下失败,删除键 – epascarello

+0

对不起,但是如何在编辑操作后跟踪点(。).i.e删除点(。)然后再添加....就像上面提到的@epascarello一样。 – o0omycomputero0o

+0

@ o0omycomputero0o @ o0omycomputero0o一旦你得到了点,你可以分割字符串,并检查是否小数点后的部分的长度为2或不 – mehulmpt

0
<input type="number" 
     min="0" 
     max="999" 
     step="0.000001" 
     pattern="[0-9]{1,2}([\.][0-9]{1,2})?" 
     id="n" /> 

这应该解决您的问题。 Use FocusOut event to capture the value

+0

这是如何解决OPs问题? – epascarello

+0

@epascarello:对我来说它的工作。这里是小提琴链接 https://jsfiddle.net/o2gxgz9r/5444/ 我在Safari浏览器中测试过。 – Krishna9960