2017-10-14 3 views
1

Wie erhöht oder verringert man den Wert aller Felder prozentual?

$("button").on("click",function(){ 
 
    var $this=$(this); 
 
    var Per=$(".per").val(); 
 
    $(".anuzau").each(function(){ 
 
     var Val=$(this).val(); 
 
     if($this.hasClass("zau")) 
 
     $(this).val((((Val/100)*Per)+parseInt(Val)).toFixed(2)); 
 
     else if($this.hasClass("anu")) 
 
     $(this).val((parseInt(Val)-((Val/100)*Per)).toFixed(2)); 
 
    }); 
 
});
.anuzau{width:200px;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="anu">-</button> <input class="per" type="text" size="6" value="0">% 
 
<button class="zau">+</button> 
 
<br><br> 
 
<input type="text" size="6" class="anuzau" name="name" value="38.5"><br> 
 
<input type="text" size="6" class="anuzau" name="name" value="75"><br> 
 
<input type="text" size="6" class="anuzau" name="name" value="100">

ich Schritten wünschen/dekrementiert alle Werte von Klassennamen (anu zau), kann mir jemand die jquery Methode teilen? Ich habe viele Tutorials ausprobiert. Ich bin neu hier, wenn etwas falsch ist, bitte korrigieren Sie mich.

<button class="anu">-</button> <input type="text" size="6" value="">% 
 
<button class="zau">+</button> 
 
<br><br> 
 

 
<td><input type="text" size="6" class="anu zau" name="name" id="id" value="50"></td><br> 
 
<td><input type="text" size="6" class="anu zau" name="name" id="id" value="200"></td><br> 
 
<td><input type="text" size="6" class="anu zau" name="name" id="id" value="530"></td>

+0

u tun müssen, Veränderung in Prozent des Grunddaten wie "50" auf jeden Klick oder relative Daten? –

Antwort

0

Dies sollte Sie loslegen. Nicht klar, welche Präzision Sie suchen, (justieren decimal_points entsprechend)

var decimal_points = 2 
 

 
$('button').click(function(){ 
 
    var pVal = $('#percent').val(), 
 
    percent = pVal && !isNaN(pVal) ? +pVal/100 : 0; 
 
    //make it negative if anu button clicked 
 
    if($(this).hasClass('anu')){ 
 
    percent = 0-percent; 
 
    } 
 
    $('input.anu').val(function(_, val){ 
 
    // make sure input has numeric value 
 
    if(!val || isNaN(val)){ 
 
     return val; 
 
    }else{ 
 
     return (+val + (val * percent)).toFixed(decimal_points); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="anu">-</button> <input id="percent" type="number" size="6" value="">% 
 
<button class="zau">+</button> 
 
<br><br> 
 

 
<td><input type="text" size="6" class="anu zau" name="name" id="id" value="50"></td><br> 
 
<td><input type="text" size="6" class="anu zau" name="name" id="id" value="200"></td><br> 
 
<td><input type="text" size="6" class="anu zau" name="name" id="id" value="530"></td>

+0

Wie ich sehen kann, funktioniert dieser Code für mich mit 2 Dezimalstellen mit 1%, warum diese Antwort -vote ist? Ich benutze das so, gibt es etwas falsch oder ein Sicherheitsproblem mit @ Charlietfl-Skript? – Jeny

+0

Nichts falsch. Jemand war wahrscheinlich bösartig – charlietfl

+0

Ok, Ihr Code funktioniert perfekt. Können Sie eine Sache überprüfen? Wenn Sie den Wert von weniger als 0,50 und 1% eingeben, ohne den Wert zu erhöhen. Geben Sie 0,49 und 1% ein. Vielen Dank. – Jeny

1

$("button").on("click",function(){ 
 
    var $this=$(this); 
 
    var Per=$(".per").val(); 
 
    $(".anuzau").each(function(){ 
 
     var Val=$(this).val(); 
 
     if($this.hasClass("zau")) 
 
     $(this).val((((Val/100)*Per)+parseInt(Val))); 
 
     else if($this.hasClass("anu")) 
 
     $(this).val((parseInt(Val)-((Val/100)*Per))); 
 
    }); 
 
});
.anuzau{width:200px;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="anu">-</button> <input class="per" type="text" size="6" value="0">% 
 
<button class="zau">+</button> 
 
<br><br> 
 
<input type="text" size="6" class="anuzau" name="name" value="50"><br> 
 
<input type="text" size="6" class="anuzau" name="name" value="200"><br> 
 
<input type="text" size="6" class="anuzau" name="name" value="530">

+0

keine Notwendigkeit für 2 identische Schleifen, wenn nur eine Variable anders ist – charlietfl

+0

@Farchad Bagherlo, Hallo, wirklich großartig. kannst du es noch einmal mit der 1 in Prozent überprüfen. Das ist kein Wert von 50. Das Problem ist nur, wenn der Prozentwert 1 ist. – Jeny

+0

hi .1% von 50 bekommt 0,5 und das ist vollkommen korrekt –

Verwandte Themen