为什么"大于"数字比较会产生意外结果

时间:2016-07-24 14:13:43

标签: javascript jquery html5

有一个输入字段,如下所示,

 <input class="form-control" type="number" name="recieved_by_quantity" id="quantity" />

动态地,将值分配给输入标记,如下所示,

 document.getElementById('quantity').value = qu;    //var qu=11 lets say

现在,我想要的是,如果用户手动输入大于&#34; qu&#34;的值,则该值会自动更改为&#34; qu&#34;。

我为此所做的就像是,

 document.getElementById('quantity').addEventListener("change", function() {
    var qc = this.value; 
    if(qc>qu) {
        this.value = qu;
    } 
});

正在发生的奇怪事情是,如果我输入从2到无穷大的任何值,它将所有值都改为11.只有它不改变的值是0,1,10,100,1000,10000等等。 我完全糊涂了。请帮忙。

2 个答案:

答案 0 :(得分:2)

简单,使用parseInt获取文本区域的实际数值。

您默认收到字符串。

this.value给你'11' parseInt(this.value)给你11。

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
</head>
<body>
<input class="form-control" type="number" name="recieved_by_quantity" id="quantity" />
</body>
<script>
var qu = 11;
 document.getElementById('quantity').value = qu;  
 document.getElementById('quantity').addEventListener("change", function() { 
    var qc = parseInt(this.value); 
    if(qc>qu) {
        this.value = qu;
    } 
});
</script>
</html>

答案 1 :(得分:0)

使用parseInt

void Move(double sourceLatitude, double sourceLongitude, double speed, double bearingOrDirection, double turnRate, double destinationLatitude, double destinationLongitude)
{
    // code goes here
}