2016-03-29 11 views
1

Ich habe ein kleines Problem mit meinem bisschen Code, es funktioniert, aber nicht so, wie ich es will.Festsetzen von Preisen mit und ohne Dezimalstellen

$('.prices').on('change', function() { 
 
    var elm = $(this).val(); 
 
    var value = (elm) ? elm.replace(/\D/, '') : '0'; 
 
    $(this).val(($('#amountDeposit').val() == 2) ? parseFloat(value).toFixed(2) : value); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div class="row"> 
 
    <div class="col-md-4"> 
 
    <select id="amountDeposit" name="amountDeposit" class="form-control"> 
 
     <option value="1">Percentage</option> 
 
     <option value="2">Fixed Amount</option> 
 
    </select> 
 
    </div> 
 
    <div class="col-md-4"> 
 
    <input type="text" name="valueDeposit" class="form-control prices" value="0"> 
 
    </div> 
 
</div>

2 Werte in der Auswahlbox, Prozent und festen Betrag. Wenn der Betrag fest ist, dann ist der Preis 2 Dezimalstellen im Wert erforderlich.

Wenn der feste Betrag ausgewählt ist und Sie 20 eingeben - JQuery ändert es auf 20,00 - aber wenn Sie 20,00 eingeben, dann ändert JQuery es auf 2000,00 - Die Idee des Ersetzens besteht darin, alle Symbole zu entfernen, die der Benutzer eingeben könnte %.

Ich habe versucht, die ParseFloat in der Ulme - aber es ist fehlerhaft, wenn ein Symbol im Wert ist.

+0

https://jsfiddle.net/25xfht1y/4/ –

Antwort

4

Sie können regex /\d+(.\d+)?/ verwenden, um die Dezimalzahl aus Benutzereingaben zu extrahieren. Alles andere als Dezimalziffern wird sicher entfernt. Sie können dann parseFloat bei Übereinstimmung verwenden.

Versuchen Sie, diese

$('.prices').on('change', function() { 
 
    var elm = /\d+(.\d+)?/.exec($(this).val()); 
 
    var value = elm ? elm[0] : '0'; 
 
    $(this).val(parseFloat(value).toFixed(2)); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div class="row"> 
 
    <div class="col-md-4"> 
 
    <select id="amountDeposit" name="amountDeposit" class="form-control"> 
 
     <option value="1">Percentage</option> 
 
     <option value="2">Fixed Amount</option> 
 
    </select> 
 
    </div> 
 
    <div class="col-md-4"> 
 
    <input type="text" name="valueDeposit" class="form-control prices" value="0"> 
 
    </div> 
 
</div>

EDIT

Wie Sie Gleitkomma nicht zulassen wollen, wenn $(#amountDeposit) zu Percentage eingestellt ist, dass dies zu tun dies unten verwenden Schnipsel.

$(this).val(parseFloat(value).toFixed($('#amountDeposit').val() == 2 ? 2 : 0)); 
+1

Vielen Dank! Das funktioniert perfekt, ich habe mein $ (this) .val (($ ('# mengeDeposit'). Val() == 2) hinzugefügt? ParseFloat (value) .toFixed (2): value); als Prozentsätze verwendet keine Dezimalstellen. – Sickaaron

+0

@Sickaaron bearbeitet, um diese Einschränkung hinzuzufügen :) –

+0

Vielen Dank! Funktioniert perfekt! – Sickaaron

Verwandte Themen