Сравнение входных значений jquery получает только одну цифру - PullRequest
0 голосов
/ 26 марта 2012

Привет, я новичок в jquery, и я сталкиваюсь с этими проблемами.

У меня есть этот код

<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>

, и мне нужно сравнить цифры, и если значение .adults больше, чемЗначение .maxpeople тогда покажи мне предупреждение.код работает, но, похоже, он занимает всего одну цифру.Например:

.maxpeople = 17

Я положил 1 в .adults и все в порядке, но если я поставлю 2, он показывает предупреждение, теперь, если я поставлю 16, он не показывает предупреждение .. чтоя делаю неправильно ??

Ответы [ 6 ]

3 голосов
/ 26 марта 2012

val() собирается вернуть строку.Если вы хотите сравнить числа, вам придется преобразовать строки в числа.

Предполагая, что вы просто хотите целые числа, используйте parseInt.

1 голос
/ 26 марта 2012

Вам нужно сравнивать целые числа, а не строки. Рассмотрим следующий пример:

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

Вы должны использовать функцию parseInt , чтобы исправить это, т.е.:

var test = parseInt($(".maxpeople").val(), 10);
1 голос
/ 26 марта 2012

Значения обрабатываются как строки, если не указано иное

Попробуйте это:

$(".adults").change(function(){
    var test = $(".maxpeople").val();
    if (  parseInt($(this).val(),10) > parseInt($(".maxpeople").val(),10)) {
        alert("test");
    }
    alert(test)
});
0 голосов
/ 26 марта 2012

Я считаю, что ваша проблема возникла из-за того, что .val() возвращает string.Используйте parseInt() вот так:

if (parseInt($(this).val()) > parseInt($(".maxpeople").val())) {
    alert("test");
}
0 голосов
/ 26 марта 2012

Ваша ошибка в том, что вы сравниваете строки.

Используйте parseInt () или parseFloat ()

0 голосов
/ 26 марта 2012

.val() будет строкой.Вам нужно сделать это число, если вы хотите числовые сравнения.

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