2012-03-26 5 views
0

hallo im neu in Jquery und im Blick auf diesem Problemjquery Eingangswert Vergleich wird nur eine Ziffer

Ich habe diesen Code

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> 
<script> 
$(".adults").change(function(){ 
    var test = $(".maxpeople").val(); 
    if ($(this).val() > $(".maxpeople").val()) { 
     alert("test"); 
    } 
    alert(test) 
}); 
</script> 

und ich brauche die Ziffern zu vergleichen und wenn der Wert von .adults ist größer als der Wert von .maxpeople, dann zeige mir eine Warnung. der Code funktioniert, aber es sieht aus wie es nur eine Ziffer braucht. exjample:

.maxpeople = 17

i setzen 1 in .adults und in Ordnung ist, aber wenn ich 2 legte es zeigt die Warnung, jetzt, wenn ich 16 legte es die Warnung zeigen tut .. was im i tun falsch??

+0

Haben Sie einen Link? –

+0

Verwenden Sie ParseInt mit einem Radix von 10, um Ihre Werte explizit als Ganzzahlen zu interpretieren. Ex. 'parseInt ($ (this) .val(), 10)> parseInt ($ (". maxpeople "). val(), 10)' – j08691

Antwort

2

val() wird eine Zeichenfolge zurückgeben. Wenn Sie Zahlen vergleichen möchten, müssen Sie die Zeichenfolgen in Zahlen umwandeln.

Angenommen, Sie möchten nur Ganzzahlen, verwenden Sie parseInt.

+0

das ist mein Link http://seo9.es/ibiza3/es/component/ibiza4rent/1? view = detalle & type = casas unter email die erste rechts ist der eingang und maxpeople ist versteckt –

+0

Es funktioniert man .. danke :) –

+2

Eine wichtige Anmerkung, ** immer ** den 'radix' Parameter (der zweite Parameter, der sagt, in welcher Basis die Zahlen sind) oder Sie werden schließlich in einige sehr seltsame Probleme mit Oktal stoßen. –

0

.val() wird eine Zeichenfolge sein. Sie müssen eine Zahl eingeben, wenn Sie numerische Vergleiche durchführen möchten.

parseInt($(this).val()) > parseInt($(".maxpeople").val()) 
0

Ihr Fehler ist, dass Sie Strings vergleichen.

Verwendung parseInt() oder parseFloat()

0

Ich glaube, Ihr Problem aus der Tatsache stammt, dass .val() ein string zurückgibt. Verwenden Sie parseInt() wie so:

if (parseInt($(this).val()) > parseInt($(".maxpeople").val())) { 
    alert("test"); 
} 
1

Die Werte als Strings behandelt werden, sofern nicht anders gesagt

Try this:

$(".adults").change(function(){ 
    var test = $(".maxpeople").val(); 
    if ( parseInt($(this).val(),10) > parseInt($(".maxpeople").val(),10)) { 
     alert("test"); 
    } 
    alert(test) 
}); 
+0

+1 für die Erinnerung an die Radix. – Blazemonger

1

Sie müssen ganze Zahlen vergleichen, keine Strings. Betrachten Sie das folgende Beispiel:

console.log("12" > "2"); //false 
console.log(12 > 2); //true 

sollten Sie verwenden die parseInt Funktion dieses Problem zu beheben, das heißt:

var test = parseInt($(".maxpeople").val(), 10); 
Verwandte Themen