2017-04-11 64 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