web-dev-qa-db-ja.com

なぜタイプ "number"のHTML入力でフィールドに文字 'e'を入力できるのですか?

次のhtml5入力要素があります。

<input type="number">

この入力によって、入力フィールドに文字 'e'を入力できるようになるのはなぜですか?他のアルファベットを入力することはできません(予想どおり)

クロム対44.0.2403.107を使用する

私が何を言っているのかを見るには http://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_number

175
Gnarlywhale

それはまさに の仕様 が正しく動作するはずだと言っているからです。数値入力では、 浮動小数点数 を使用できます。負の記号とeまたはEの文字を含みます(指数はeまたはEの後の数字です)。

浮動小数点数は、正確に以下の順序で、以下の部分から構成されています。

  1. 必要に応じて、最初の文字は "-"文字です。
  2. "0—9"の範囲の1つ以上の文字。
  3. 必要に応じて、以下の部分、正確に次の順序で:
    1. "."文字
    2. "0—9"の範囲の1つ以上の文字
  4. 必要に応じて、以下の部分、正確に次の順序で:
    1. "e"文字または "E"文字
    2. オプションで、 "-"文字または "+"文字
    3. "0—9"の範囲の1つ以上の文字。
169
j08691

以下のようにとてもシンプルにできます

<input type="number"  onkeydown="javascript: return event.keyCode == 69 ? false : true" />

更新された回答

@ 88 MPGが示唆しているように、もっと単純にすることができます。

<input type="number" onkeydown="return event.keyCode !== 69" />
38
codegeek

HTML入力番号タイプでは "e/E"が使用できます。これは、 "e"が数値記号である指数を表すためです。

例200000は2e5と書くこともできます。ご質問ありがとうございます。

14
Anon Cypher
<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();
    }
};
9
TruthSeeker

数字だけで構成された数字の使用を強制するための最善の方法:

<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)を受け入れてください...

3
A. Morel

eとマイナス記号-の両方の文字を非表示にするには、次のようにします。

onkeydown="return event.keyCode !== 69 && event.keyCode !== 189"
0