Einfachste Möglichkeit, Zeichen in der HTML(5)-Texteingabe zu maskieren

Lesezeit: 3 Minuten

Benutzeravatar von devios1
devios1

Hat HTML5 irgendeine Art von Textfeldmaskierung oder muss ich trotzdem trappen onkeydown etc.?

jbabey hat recht – “maskieren” wie das Blockieren bestimmter illegaler Zeichen, nicht das Verbergen dessen, was eingegeben wird.

Der beste (wie am einfachsten und zuverlässigsten) Weg, den ich gefunden habe, ist zu trapen onkeyup und führen Sie dann einfach eine Regex-Ersetzung für den Wert des Textfelds aus und entfernen Sie alle illegalen Zeichen.

Dies hat einige Vorteile:

  1. Es ist einfach zu implementieren (eine Funktion, zwei Codezeilen).
  2. Es ist zuverlässig und deckt alle Fälle ab, an die ich gedacht habe.
  3. Tastenbefehle wie Kopieren/Einfügen, Alle auswählen oder Pfeiltasten werden nicht blockiert.

Der größte Nachteil ist jedoch, dass die eingegebenen Zeichen kurz angezeigt werden, bevor sie entfernt werden, wodurch es sehr hackisch und unprofessionell aussieht.

  • Warum nicht input von type="password" ?

    – Zuul

    4. Juni 2012 um 20:10 Uhr

  • Frage bedeutet wahrscheinlich, dass nur bestimmte Zeichen im Textfeld erscheinen dürfen, zum Beispiel Zahlen und (-) für Telefoneingaben

    – Heitor Chang

    4. Juni 2012 um 20:13 Uhr

  • ich glaube er meint Maskenicht Maske

    – jbaby

    4. Juni 2012 um 20:14 Uhr

  • Sie müssen immer noch onkeydown ausführen (siehe stackoverflow.com/questions/15728261/…), es sei denn, Sie möchten eine Filterung im Reg-Ex-Stil, wie unten beschrieben.

    – der coole MacTyp

    1. September 2017 um 21:09 Uhr

Benutzeravatar von saluce
Salut

Schau dir das Neue an HTML5-Eingabetypen. Diese weisen Browser an, eine clientseitige Filterung von Daten durchzuführen, aber die Implementierung ist in verschiedenen Browsern unvollständig. Das pattern Das Attribut filtert im Regex-Stil, aber Browser unterstützen dies wiederum nicht vollständig (oder überhaupt nicht).

Diese blockieren jedoch nicht die Eingabe selbst, sondern verhindern lediglich das Absenden des Formulars mit den ungültigen Daten. Du musst die immer noch fangen onkeydown -Ereignis, um die Tasteneingabe zu blockieren, bevor es auf dem Bildschirm angezeigt wird.

  • Um die Antwort zu verbessern, sollte ein Beispiel für Trapping onkeydown gegeben werden.

    – der coole MacTyp

    1. September 2017 um 21:01 Uhr

  1. Eine grundlegende Validierung kann durch Auswahl von durchgeführt werden Typattribut von Eingabeelementen. Zum Beispiel:
    <input type="email" />
    <input type="URL" />
    <input type="number" />

  2. verwenden Muster Attribut wie:
    <input type="text" pattern="[1-4]{5}" />

  3. erforderlich Attribut
    <input type="text" required />

  4. maximale Länge:
    <input type="text" maxlength="20" />

  5. Minimal Maximal:
    <input type="number" min="1" max="4" />

Ja, laut HTML5-Entwürfen kann man das verwenden pattern -Attribut, um die zulässige Eingabe mithilfe eines regulären Ausdrucks anzugeben. Für einige Datentypen können Sie spezielle Eingabefelder verwenden, z <input type=email>. Aber diese Funktionen werden noch weitgehend nicht oder nur qualitativ schlecht unterstützt.

  • Ah gut! Genau so etwas hatte ich mir erhofft. Meine Google-Suche hat nichts ergeben. Leider scheint es noch nicht sehr weit verbreitet zu sein.

    – devios1

    4. Juni 2012 um 20:23 Uhr

  • @chaiguy, Die attr-input-pattern von dem W3C Working Draft 29. März 2012 !

    – Zuul

    4. Juni 2012 um 20:36 Uhr

  • Leider scheint die Spezifikation nur zu definieren, wann ein Element unter Musterkonflikten leidet, nicht, wie der Browser damit umgehen soll. Im Idealfall würde es verhindern, dass die Eingabe jemals stattfindet, aber es könnte nur zu einem roten Rand oder so etwas Dummem führen.

    – devios1

    4. Juni 2012 um 20:43 Uhr

Benutzeravatar von Stephen Romero
Stefan Romero

Etwas spät, aber ein nützliches Plugin, das tatsächlich eine Maske verwendet, um die Benutzereingabe etwas mehr einzuschränken.

<div class="col-sm-3 col-md-6 col-lg-4">
  <div class="form-group">
     <label for="addPhone">Phone Number *</label>
      <input id="addPhone" name="addPhone" type="text" class="form-control 
       required" data-mask="(999) 999-9999"placeholder>
    <span class="help-block">(999) 999-9999</span>
  </div>
</div>

 <!-- Input Mask -->
 <script src="https://stackoverflow.com/questions/10887645/js/plugins/jasny/jasny-bootstrap.min.js"></script>

Geben Sie hier die Bildbeschreibung ein

Weitere Informationen zum Plugin https://www.jasny.net/bootstrap/2.3.1/javascript.html#inputmask

Benutzeravatar von Ravi Desai
Ravi Desai

Verwenden Sie dieses JavaScript.

$(":input").inputmask();
$("#phone").inputmask({"mask": "(999) 999-9999"});

1437010cookie-checkEinfachste Möglichkeit, Zeichen in der HTML(5)-Texteingabe zu maskieren

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy