2016-07-24 18 views
-1

Es ein Eingabefeld ist, wie diese,Warum „größer als“ Vergleich von Zahlen unerwartetes Ergebnis geben

<input class="form-control" type="number" name="recieved_by_quantity" id="quantity" /> 

Dynamisch, ein Wert, mit dem Eingangs-Tag zugeordnet ist, wie diese,

document.getElementById('quantity').value = qu; //var qu=11 lets say 

Nun, was ich will ist, wenn der Benutzer manuell einen Wert größer als "qu" eingibt, dann würde sich der Wert automatisch zu "qu" ändern.

Was ich dafür getan hat, ist so etwas wie,

document.getElementById('quantity').addEventListener("change", function() { 
    var qc = this.value; 
    if(qc>qu) { 
     this.value = qu; 
    } 
}); 

Das Merkwürdige, was geschieht, wenn ich von 2 bis unendlich jeder beliebige Wert eingegeben wird, ist es, sie alle zu 11. Nur Veränderung schätzen es tut nicht ändern sind 0,1,10,100,1000,10000 und so weiter .. Ich bin völlig verwirrt. Bitte helfen Sie.

+3

Ihr Code erscheint gut zu funktionieren: https: // jsfiddle. net/35nbL5qd/ –

+0

Was ist der Wert von 'qu'? Ist es die Nummer "11" oder die Zeichenfolge "11"? – Barmar

Antwort

0

Verwenden ParseInt

var qc = parseInt(this.value) 
+2

Erklären Sie, warum er das tun sollte. – Barmar

+1

Dies sollte nicht benötigt werden, wenn 'qu' eine Zahl ist. – Barmar

+0

Mann, das funktioniert. danke ein Haufen –

2

Seine einfache, benutzen parseInt tatsächliche Anzahl Wert Ihrer Text-Bereich zu erhalten.

Sie erhalten standardmäßig eine Zeichenfolge.

this.value gibt Ihnen '11' parseInt (this.value) geben wird 11.

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <title></title> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
 
</head> 
 
<body> 
 
<input class="form-control" type="number" name="recieved_by_quantity" id="quantity" /> 
 
</body> 
 
<script> 
 
var qu = 11; 
 
document.getElementById('quantity').value = qu; 
 
document.getElementById('quantity').addEventListener("change", function() { 
 
    var qc = parseInt(this.value); 
 
    if(qc>qu) { 
 
     this.value = qu; 
 
    } 
 
}); 
 
</script> 
 
</html>

+1

danke, ich habe es –

Verwandte Themen