我正在对输入字段的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>
答案 0 :(得分:2)
.attr
和.val()
返回String
个对象 - 使用一元+
运算符将其转换为数值。
var admin = $('input[name="diskStorage"]').attr('data-adminstorage');
admin = +admin;
if(admin < +$(this).val()) {
//...
}
答案 1 :(得分:0)
尝试在检索管理员值后添加/1
,使其成为不是字符串的数字。
var admin = $('input[name="diskStorage"]').attr('data-adminstorage')/1;
编辑:也在this.val上:
$(this).val()/1;
答案 2 :(得分:0)
他们可能都是字符串。您应该首先将它们转换为数字:
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');
});