当我点击输入<input type="number" id="n" />
时;在输入的keypress
函数上键入一些键。然后输入.
虽然它显示在输入中,但我无法在.
中看到$('#n').val()
。
例如,在输入后:123.
然后$('#n').val()
只返回123
。
<input type="number" />
的任何属性是否可以raw value
123.
而不是123
?
$("#n").on("keypress", function(event) {
console.log($("#n").val());
});
&#13;
<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" />
&#13;
更新:
input
必须具有类型编号,以便仅在移动网络上的软键盘上显示数字输入。应检查模式99.99并按以下方式工作:
如果没有检测到存在点(。),如何检测连续输入多个.
的情况?
答案 0 :(得分: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>
答案 1 :(得分: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
答案 2 :(得分:0)
为了从类型为 numeric 的输入中获取值,当值以点结尾时,您需要使用一种要求您侦听 'onKeyUp' 事件的hacky 解决方案。此行为是有意为之,因为数字输入应仅返回有效数字。
这是我所描述的解决方案的实现:
const resultContainer = document.querySelector("#result");
let value = null;
const updateValue = (event) => {
const DOT_KEY_CODE = 190;
const BACKSPACE_KEY_CODE = 8;
let newValue = event.currentTarget.value;
if (newValue === "" || newValue === null) {
if (event.keyCode === DOT_KEY_CODE) {
newValue = value.toString() + ".";
} else if (event.keyCode === BACKSPACE_KEY_CODE) {
const valueParts = value.toString().split(".");
const DECIMAL_PART = 1;
const decimalPlaces = valueParts.length > 1 ? valueParts[DECIMAL_PART].length : 0;
const LAST_DECIMAL_PLACE = 1;
if (decimalPlaces === LAST_DECIMAL_PLACE) {
const REMOVE_ONE_CHAR = 1;
newValue = value.toString().substring(0, value.toString().length - REMOVE_ONE_CHAR);
}
}
}
value = newValue;
resultContainer.innerHTML = newValue;
};
<input type="number" onKeyUp="updateValue(event)" />
<div>Received value: <span id="result"></span></div>