Soweit ich trainieren kann, alles, was Sie wirklich tun müssen, ist dies:
$('#ssn').keyup(function()
{
this.value = this.value.replace(/(\d{3})\-?/g,'$1-');
});
aber das wird nur funktionieren, wenn die Leute Ziffern eingeben, so würde ich vorschlagen, eine eine zusätzliche Überprüfung der Einführung:
$('#ssn').keyup(function(e) {
if ((e.keyCode > 47 && e.keyCode < 58) || (e.keyCode < 106 && e.keyCode > 95)) {
this.value = this.value.replace(/(\d{3})\-?/g, '$1-');
return true;
}
//remove all chars, except dash and digits
this.value = this.value.replace(/[^\-0-9]/g, '');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" id="ssn">
Ein wenig mehr auf der regex /(\d{3})\-?/g
:
Diese ersetzt Gruppe von 3 Ziffern mit sich selbst, gefolgt von einem Bindestrich. Die Klammern erzeugen einen Rückverweis auf die übereinstimmenden Ziffern, die in der Ersetzungszeichenfolge verwendet werden ($1-
-> $ 1 ist die Rückreferenz).
Beachten Sie, dass ein optionaler Strich ebenfalls ersetzt wird, jedoch nicht in der Rückreferenz enthalten ist. Wenn die Eingabe 123
ist und das Ersetzen-Muster etwas wie /(\d{3})/g
oder /(\d{3}\-?)/g
wäre, würde der Wert 123-4
, 123--45
, 123---456
und so weiter werden, die Striche jedes Mal verdoppelt werden.
Warnung:
Dies wird dem Benutzer eine gewisse Trauer, da die Pfeiltasten geben und so nicht work.Luckily wird, das ist eine einfache Lösung: Einfach den folgenden Code an der Spitze Ihrer Funktion hinzu:
if (e.keyCode > 36 && e.keyCode < 41)
{
return true;
}
Und die Pfeile funktionieren gut. für andere Schlüssel (wie Löschen, Rücktaste, Verschiebung usw.) check this page.
Ein vollständiges Beispiel: here's the fiddle
nicht bekommen, wie Sie das endgültige Format zu sein? – Khodor
Was ist der Unterschied zwischen dem Format Ihrer Lösung und dem gewünschten Format? – Bergi
Mögliches Duplikat von [Wie man eine Telefonnummer mit jQuery formatiert] (http://stackoverflow.com/questions/8760070/how-to-format-a-phone-number-with-jquery) – rnevius