次のhtml5入力要素があります。
<input type="number">
この入力によって、入力フィールドに文字 'e'を入力できるようになるのはなぜですか?他のアルファベットを入力することはできません(予想どおり)
クロム対44.0.2403.107を使用する
私が何を言っているのかを見るには http://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_number
以下のようにとてもシンプルにできます
<input type="number" onkeydown="javascript: return event.keyCode == 69 ? false : true" />
更新された回答
@ 88 MPGが示唆しているように、もっと単純にすることができます。
<input type="number" onkeydown="return event.keyCode !== 69" />
HTML入力番号タイプでは "e/E"が使用できます。これは、 "e"が数値記号である指数を表すためです。
例200000は2e5と書くこともできます。ご質問ありがとうございます。
<input type="number" onkeydown="return FilterInput(event)" onpaste="handlePaste(event)" >
function FilterInput(event) {
var keyCode = ('which' in event) ? event.which : event.keyCode;
isNotWanted = (keyCode == 69 || keyCode == 101);
return !isNotWanted;
};
function handlePaste (e) {
var clipboardData, pastedData;
// Get pasted data via clipboard API
clipboardData = e.clipboardData || window.clipboardData;
pastedData = clipboardData.getData('Text').toUpperCase();
if(pastedData.indexOf('E')>-1) {
//alert('found an E');
e.stopPropagation();
e.preventDefault();
}
};
数字だけで構成された数字の使用を強制するための最善の方法:
<input type="number" onkeydown="javascript: return event.keyCode === 8 || event.keyCode === 46 ? true : !isNaN(Number(event.key))" />
これは 'e'、 ' - '、 '+'、 '。'を避けます。 ...
数字キーのみを許可するには
isNaN(Number(event.key))
しかし、 "Backspace"(keyCode:8)と "Delete"(keyCode:46)を受け入れてください...
e
とマイナス記号-
の両方の文字を非表示にするには、次のようにします。
onkeydown="return event.keyCode !== 69 && event.keyCode !== 189"