2016-05-17 7 views
0

Ich versuche, den Wert meiner Eingangs html5ein Muster Formatwert Anwendung bei Eingabe des Typs Zahl

ich als Minimalwert 001 verwenden möchten zu formatieren und als Maximalwert 999. Wenn ich 1 eingeben, ich brauche den Wert zu sein, in 001. und 10 010.

übersetzen ich die Anzahl der Ziffern 3. zu beheben, die die gleiche Wirkung ist, dass „% 03d“

ich im Internet eingecheckt haben eine Lösung zu finden war wahrscheinlich ein Muster für meine Eingabe, aber nach vielen Versuchen bin ich immer noch festgefahren.

Ich habe eine Schnittstelle erstellt, und ich möchte ein bestimmtes Format für meine Eingabe vom Typ Nummer definieren. Dieses Format ist ein Format mit 3 Ziffern. Wenn Sie also 1 eingeben, muss die Eingabe den Wert korrigieren und in 001 übersetzen ... oder es kann den alten Wert beibehalten und den falschen Wert vergessen.

Eingabe (Typ = "Nummer" min = "001" max = "999" Muster = "xxxx", style = "Breite: 45px; Textausrichtung: Mitte"). Input-sm # inputDut2-int

Ich weiß, oder ich denke zumindest, dass ich das mit einem Muster lösen kann.

+0

möglich Duplikat http://stackoverflow.com/questions/2686855/ is-there-a-javascript-function-that-kann-pad-a-string-to-get-to-a-determined-lengt –

+0

Vielen Dank. Ich habe schon so etwas probiert. Aber wenn ich die Pfeile rechts von meiner Eingabe verwende, um den Wert der Eingabe zu steuern, wenn mein tatsächlicher Wert 001 ist und ich auf den + 1 Pfeil klicke, ist der nächste Wert 2. Jeder Wert von weniger als 3 Stellen musn Ich existiere nicht für mich. – RaiZer

Antwort

0

Bei einer Zahleneingabe können Sie nicht "012" eingeben, da 012 === 12. Sie müssen stattdessen eine Texteingabe verwenden.

Auf dieser Texteingabe können Sie das Eingabeformat je nach Bedarf einfach durch den Wert padding:

function padLeftWithBounds(input, padChar, maxLength, min, max) { 
 
    if (input <= min) 
 
    return min; 
 
    if (input >= max) 
 
    return max; 
 

 
    var s = input.toString(10); 
 
    var padding = ""; 
 
    for (var i = 0; i < maxLength; ++i) 
 
    padding += padChar; 
 

 
    return padding.substring(0, maxLength - s.length) + s; 
 
}; 
 

 
$("input").on("keyup", function() { 
 
    if (!$(this).val()) 
 
    return; 
 
    $(this).val(padLeftWithBounds(parseInt($(this).val()), '0', 3, 0, 999)); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form> 
 
    <input type="text" /> 
 
</form>

+0

Mein Problem kommt von der Anzeige von Werten in der Eingabe. ich möchte nicht an der Zeichenkette in der Eingabe arbeiten, sondern ein Format erzwingen, damit der Benutzer nichts anderes eingeben kann als eine Zahl mit 3 Ziffern. Sorry, wenn meine Frage nicht klar ist – RaiZer

+0

in der Tat ist es nicht klar :) –

+0

Ich werde bearbeiten und versuchen, es klarer zu machen: 3 – RaiZer

Verwandte Themen