it-swarm.com.de

Warum kann bei der HTML-Eingabe mit dem Typ "Zahl" der Buchstabe "e" in das Feld eingegeben werden?

Ich habe das folgende HTML5-Eingabeelement:

<input type="number">

Warum kann bei dieser Eingabe das Zeichen 'e' in das Eingabefeld eingegeben werden? Es kann kein anderes Alphabetzeichen eingegeben werden (wie erwartet)

Verwenden Sie chrome v. 44.0.2403.107

Um zu sehen, was ich meine: http://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_number

186
Gnarlywhale

Denn genau so sagt die Spezifikation , dass es funktionieren sollte. Die Zahleneingabe kann Gleitkommazahlen akzeptieren, einschließlich negativer Symbole und des Zeichens e oder E (wobei der Exponent die Zahl nach dem Zeichen e ist. ] oder E):

Eine Gleitkommazahl besteht aus den folgenden Teilen in genau der folgenden Reihenfolge:

  1. Optional kann das erste Zeichen ein "- "Zeichen.
  2. Ein oder mehrere Zeichen im Bereich "0—9 ".
  3. Optional die folgenden Teile in genau der folgenden Reihenfolge:
    1. ein ". "Zeichen
    2. ein oder mehrere Zeichen im Bereich "0—9 "
  4. Optional die folgenden Teile in genau der folgenden Reihenfolge:
    1. ein Zeichen "e" oder "E"
    2. optional ein "- "Zeichen oder" + "Zeichen
    3. Ein oder mehrere Zeichen im Bereich "0—9 ".
180
j08691

Wir können es so einfach machen wie unten

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

Aktualisierte Antwort

wir können es noch einfacher machen, wie @ 88 MPG vorschlägt

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

Der HTML-Eingabenummerntyp erlaubt "e/E", da "e" für Exponential steht, was ein numerisches Symbol ist.

Beispiel 200000 kann auch als 2e5 geschrieben werden. Ich hoffe das hilft dir, danke für die Frage.

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

So erzwingen Sie die Verwendung einer Nummer, die nur aus Ziffern besteht:

<input type="number" onkeydown="javascript: return event.keyCode === 8 || event.keyCode === 46 ? true : !isNaN(Number(event.key))" />

dies vermeidet 'e', ​​'-', '+', '.' ... alle Zeichen, die keine Zahlen sind!

So lassen Sie nur Zifferntasten zu:

isNaN (Nummer (event.key))

aber akzeptiere "Backspace" (keyCode: 8) und "Delete" (keyCode: 46) ...

7
A. Morel

So verbergen Sie sowohl den Buchstaben e als auch das Minuszeichen - mach einfach:

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