2017-02-16 2 views
1

Zum Beispiel habe ich, Eingabe-Typ mit vordefinierter Länge. Ich möchte erreichen, wenn der Eingabewert größer oder gleich 3 ist, diesen Teil von String [3] durch '/' zu ersetzen;Teil des Eingabewerts bei Tastendruck jquery ersetzen?

<input type="text" id="number" maxlength="6" placeholder="MM/YY"/> 

Und hier ist jquery

$('#number').on('keypress',function(){ 
if(this.value.length <= 3) { 
this.value.replace(this.value[3],'/'); 
} 
}); 

Also kurz gesagt, wenn Benutzertypen innerhalb Eingabefeld zum Beispiel: 1234, die Nummer 3 Bedarf mit ‚/‘ und als der Wert ersetzt werden 12 wäre/2017, wie Ablaufdatum der Kreditkarte. Vielen Dank im Voraus

Antwort

4

Sie können so etwas versuchen. Musste die maximale Länge des Eingabewertes von 6 auf 7 ändern.

Versuchen Sie mit z.B. 12/2017.

$('#number').on('keypress', function() { 
 
    if (this.value.length >= 2) { 
 
    this.value = this.value.slice(0, 2) + '/' + this.value.slice(3, this.value.length) 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="number" maxlength="7" placeholder="MM/YY" />

+1

Super :) Danke – NemanjaD

+0

Ein kleines Problem ist, dass, wenn ein Benutzer "12 /", sie am Ende mit "12 //". Es kann gut sein, den Wert für "/" vor dem Ersetzen zu testen. –

+0

@JeffB Tolle Idee, wird daran arbeiten. –

0

Sie könnten die folgende versuchen.

Wo delimeIndeces ist wo in der Zeichenfolge, die Sie überprüfen und die Werte ändern möchten. InputString ist die Zeichenfolge, die vom Eingabe-Tag zurückgegeben wird.

let delimeterIndices = [2,5]; // "02[/]15[/]2017"; 
 
let inputString = "123152017"; 
 
let resultString = inputString.split('').map((char, index) => { 
 
    if(delimeterIndices.indexOf(index) !== -1) { 
 
    return '/'; 
 
    } else { 
 
    return char; 
 
    } 
 
}).join(''); 
 

 
console.log(resultString);

Verwandte Themen