我正在对输入字段的 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>
最佳答案
.attr
和 .val()
返回 String
对象 - 使用一元 +
运算符将其转换为数值。
var admin = $('input[name="diskStorage"]').attr('data-adminstorage');
admin = +admin;
if(admin < +$(this).val()) {
//...
}
关于javascript 有条件返回意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4787746/