2016-10-13 4 views
1

Also ich habe dieses Problem. Ich will eine Beschränkung von 15 Zeichen für eine Zahl und 3 Zeichen für die gleiche Zahl nur für Dezimalzahlen. Also meine letzte Nummer kann eine Anzahl von maximal 15 Ziffern sein, aber wenn ich nach "." um 3 weitere Dezimalstellen hinzuzufügen. Also kann meine Zahl nur dann größer als 15 Zeichen sein, wenn ich Dezimalstellen habe (3 Maxime). Hoffe ich war klar genug. Danke.Wie setze ich 2 Grenzen in javaScript für die gleiche Nummer, eine für Ziffern und die zweite für Dezimalstellen

+0

Also kann es 19chars sein? 15 + "." + 3? oder ist 15 der Hard-Max, also 15 ohne Dezimalen oder 13 + "." + 1dp oder 11 + "." + 3dp (etc)? –

+0

Es kann 19chars nur 15 + "sein." + 3 oder ohne "." max 15. –

+0

Ist der String-Wert von '' Element? – guest271314

Antwort

3

Sie können RegExp/^\d{15}(?:\.\d{3}|$)/ fünfzehn Ziffern entsprechen, oder fünfzehn von . gefolgt von drei Ziffern gefolgt Ziffern, gefolgt von Ende der Zeichenkette

var re = /^\d{15}(?:\.\d{3}|$)/; 
 
console.log(re.test("1234567891.23456")); // false 
 
console.log(re.test("123456789123456.123")); // true 
 
console.log(re.test("12345678912345")); // false 
 
console.log(re.test("123456789123456")); // true

Mit pattern Attribute bei <input> Elemente

:invalid { 
 
    background: red; 
 
}
<input required pattern="^\d{15}(?:\.\d{3}|$)">

+0

pure genius :) tolle lösung..dank viel. –

+0

"Genie" ein perfektes Wort für Sie Mann :) –

+0

@AndreiChivu Siehe aktualisierten Beitrag. Reduziert 'RegExp' um mehrere Zeichen. – guest271314

1

dies sollte die richtige sein:

wie OP gefragt, kann es entweder 15 Zeichen oder 11 + + 3 = 15 Zeichen

:invalid { 
 
    background: red; 
 
}
<input required pattern="(\d{15}$)|(\d{11}\.\d{3}$)">

+0

_ "Es kann nur 19chars sein" _ '11 + 4 === 15 && 11 + 4! == 19' – guest271314

+0

awww habe es, lesen Sie einfach die Anforderung erneut :), danke –

1

. Dies funktioniert, wie Sie wollen:

$("input").keydown(function(event){ 
     var value=$("input").val(); 
    if($.inArray(event.keyCode, [48,49,50,51,52,53,54,55,56,57,46,8, 9, 27, 13, 110,190])>=0) 
    { 
    if(value.length>=15) 
    { 
     if((event.keyCode==190 || value.indexOf(".")>0) && value.length<19) 
     { 
      return true; 
      } 
     else 
     { 
      return false; 
     } 
    }} 
else 
{ 
return false; 
} 
}); 
+0

das ist perfekt. –

+0

@AndreiChivu Wenn dies für Sie funktioniert, markieren Sie es bitte als richtige Antwort. –

+0

http://unixpapa.com/js/key.html hat aber einige Kompatibilitätsprobleme. –

Verwandte Themen