javascript условный возврат неожиданного результата - PullRequest
0 голосов
/ 25 января 2011

Я делаю простое сравнение чисел по событию keyUp поля ввода. По какой-то причине я не получаю ожидаемого результата и не могу понять, почему. должно случиться так, что если введенный пользователем номер больше, чем тот, который хранится в атрибуте html, фон должен стать красным, в противном случае он остается белым. Просто введите «9» и фон станет красным. ??

var admin = $('input[name="diskStorage"]').attr('data-adminstorage'); // 2097152000

$('#new-user input[name="diskStorage"]').keyup(function(){

    if(admin < $(this).val())
        $(this).css('background','red');
    else
        $(this).css('background','white');
});

Когда я отлаживаю эти значения, if(2097152000 < 549) возвращает true. Вот HTML, в случае, если это имеет какое-либо значение:

<form action="administrate.php" method="post" id="new-user">
<table><tbody><tr>
...
  </tr><tr>
    <td>Disk Storage Limit:</td>
    <td>
   <input type="text" data-adminStorage="2097152000" name="diskStorage" value="" /> megaBytes<br />
    <span id="info"></span></td>
...
  </tr></tbody></table>

Вот оно, живое: http://jsfiddle.net/JMC_Creative/dqAJj/2/

Ответы [ 3 ]

2 голосов
/ 25 января 2011

.attr и .val() возвращают String объекты - используйте унарный оператор + для преобразования его в числовое значение.

var admin = $('input[name="diskStorage"]').attr('data-adminstorage');
admin = +admin;

if(admin < +$(this).val()) {
   //...
}
0 голосов
/ 25 января 2011

Они, вероятно, обе строки. Сначала вы должны преобразовать их в числа:

var admin = Number($('input[name="diskStorage"]').attr('data-adminstorage')); // 2097152000

$('#new-user input[name="diskStorage"]').keyup(function(){

    if(admin < Number($(this).val()))
        $(this).css('background','red');
    else
        $(this).css('background','white');
});
0 голосов
/ 25 января 2011

Попробуйте добавить /1 после получения значения администратора, чтобы сделать его числом, а не строкой.

var admin = $('input[name="diskStorage"]').attr('data-adminstorage')/1;

Редактировать: также в this.val:

$(this).val()/1;
...