2017-09-05 3 views
3

Ich habe eine Funktion auf meiner aktuellen Site, die einen Wert erhöht oder verringert, wenn Sie auf die Plus- oder Minustaste klicken. Da es sich auf einer E-Commerce-Website als Auftragsmenge befindet, ist es nicht sinnvoll, eine Option für den Wert negativ zu haben. Ich habe versucht, meiner jQuery Logik hinzuzufügen, die verhindern würde, dass der Wert negativ wird, aber meine verschachtelte Logik funktionierte aus irgendeinem Grund nicht. Jede Hilfe würde sehr geschätzt werden!Verhindern, dass Eingabequant in JQuery negativ wird

JQuery

$(document).ready(function(e) { 

$('.up').on('click',function(){ 
      var num = $(this).parent().find('.input-quantity').val(); 
      $(this).parent().find('.input-quantity').val(parseInt(num)+1); 
     }); 
     $('.down').on('click',function(){ 
       var num = $(this).parent().find('.input-quantity').val(); 
      $(this).parent().find('.input-quantity').val(parseInt(num) -1); 
     }); 

}); 

HTML

<div class="quantity clearfix"> 
    <span>quantity:</span> 
      <div class="incre"> 
     <em class="down">-</em ><input type="text" value="1" class="input1 input-quantity "><em class="up">+</em ><br> 

</div> 
     <div class="clear"></div> 

    </div> 

CSS

.quantity      {margin: 30px 0 0 0;max-width:242px;border: solid 1px #d3d2d2;padding: 3px 0 6px 11px;border-radius: 4px;} 
.quantity span     {display:inline-block;float:left;font-family:Arial, Helvetica, sans-serif;font-size: 14px;line-height: 20px;padding: 6px 0 0 0;color: #333333;} 
.incre     {display:inline-block;float:right;margin: 0;width: 39%;} 
.incre em     {display: inline-block;font-size: 26px;line-height: 31px;width: 29px;height: 29px;background: #cccccc;border-radius: 100%;color: #fff;padding: 0;float: left;text-align: center;margin: 0; cursor:pointer;} 
.incre .input1    {outline:none;border:0;display: inline-block;float: left;width: 20px;text-align: center;margin: 0 7px 0 3px;padding: 3px 0 0 0;font-size: 19px;height: 28px;line-height: 19px;color: #000;} 
.quantity small    {display:block;font-size: 18px;line-height: 20px;color: #000;padding: 0 12px 0 9px;} 

Was ich versucht habe:

Ich habe versucht, die Funktionalität für die 'nach unten' Taste in meinem jQuery zu ändern, um zu sagen, wenn der Wert gleich Null ist, wenn die Funktion ausgeführt wird, den Wert gleich eins und dekrementieren der Wert. Dieser Hack würde verhindern, dass der Wert jemals negativ wird.

$('.down').on('click',function(){ 
      var num = $(this).parent().find('.input-quantity').val(); 
    if(num = 0){num = 1} 
     $(this).parent().find('.input-quantity').val(parseInt(num) -1); 
    }); 

ich auch versucht:

if(num === "0"){num === "1"} 

vor der Anweisung, die den Wert dekrementiert, da es schien, als ob die ganze Zahl als String zurückkehrt gewesen sein.

Wie auch immer, jede Hilfe wäre sehr willkommen!

+0

können Sie '' – azad

+3

'' –

Antwort

2

Es sollte

if(num == 0) { 
    num = 1; 
} 

statt num = 0

+0

Das hat funktioniert! Vielen Dank. Warum also macht der == vs. einen so großen Unterschied? – SDH

+0

Froh, dass es funktioniert hat. In Javascript vergleichen Sie Werte mit '==' oder '===' ('===' ist für die Typüberprüfung, die Sie auch hier verwenden können - wie 'num === '0''). Sie können mehr lesen unter - https://developer.mozilla.org/en/docs/Web/JavaScript/Equality_comparisons_and_sameness –

3

Verwenden Sie eine Eingabe type=number sein, legen Sie ein Minimum

<input type="number" min="0"> 
+0

Coole Lösung. Meine Formatierung wurde ein wenig vermasselt, weil sie Pfeile über der Zahl hinzufügte. Gibt es eine Möglichkeit, dies zu deaktivieren? – SDH

+0

Nicht sicher, was du meinst - aber im Grunde gibt dir das auch Pfeile, um zu erhöhen und zu verringern, also solltest du wirklich nichts anderes brauchen –

+0

Es gibt einige spezifische Design-Spezifikationen auf diesem. Gibt es eine Möglichkeit, die Pfeile zu stylen oder sie auf beiden Seiten der Zahl zu verschieben? – SDH

Verwandte Themen