2016-07-11 6 views
0

Unten ist mein Textbox:Wie kann man verhindern, dass Benutzer mehr als zwei Stellen nach dem Komma eingeben?

<input type="number" id="payement-textbox'+index+'" name="payment-textbox" min="0" max="100000" step="any" maxlength="9" class="payment" placeholder="--" value=""/>; 

Es gibt zwei Validierung auf meine Nummer Typ Textbox. Erstens kann der Benutzer keinen größeren Wert als 99999.99 eingeben, den ich erfolgreich angewendet habe. Der andere ist, dass Benutzer nicht mehr als zwei Ziffern nach dem Dezimal eingeben können, die nicht funktioniert.

Hier ist meine jQuery-Code:

$('input.payment').on("change paste keyup", function(event) { 
      var max = parseFloat($(this).attr('max')); 
      var num = parseFloat($(this).val()); 
      if (num >= max) 
      { 
       $(this).val("99999.99"); 
      } 
      if(($(this).val().indexOf('.') != -1) && ($(this).val().substring($(this).val().indexOf('.')).length > 2)) 
      { 
      event.preventDefault(); 
      } 

     }); 

Könnten Sie mir bitte sagen, wo ich falsch gehe?

+0

diesen Link finden, hoffen, so das wird Ihnen helfen http://stackoverflow.com/questions/21796827/jquery-allow-only-two-numbers-after-decimal- Punkt –

+0

http://jsfiddle.net/S9G8C/203/ –

+0

Weil es ausgelöst wird ** nachdem ** der Eingang bereits eingegeben wurde, wollen Sie 'keydown' verwenden. Beachten Sie, dass Sie eine Möglichkeit für den Benutzer benötigen, die 2. Dezimalstelle zu löschen (* ex: prüfen Sie für die 3. Dezimalstelle und entfernen Sie die letzte Ziffer *). –

Antwort

0

Versuchen:

$("#yourinput").keyup(function(){ 
 
    var num = parseFloat($(this).val()); 
 
    if (num >= 99999.99) 
 
    { 
 
    $(this).val("99999.99"); 
 
    } 
 
    
 
    var number = ($(this).val().split('.')); 
 
    if (number[1] && number[1].length > 2) 
 
    { 
 
    var salary = parseFloat($("#yourinput").val()); 
 
    $("#yourinput").val(salary.toFixed(2)); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
<input id="yourinput" pattern="\d+"> 
 
<span id=bad style="display:none;color:red">BAD</span>

+0

Das hat funktioniert. Danke vielmals :) –

0

Sie müssen die Tastendruck-Ereignis verwenden, damit es ausgelöst wird, bevor der Eingang eingegeben wird.

Dies funktioniert:

$('input.payment').on("keypress paste keyup", function(event){ 
    //Your code 
}) 
Verwandte Themen