Javascript 将输入值与0轨迹进行比较
我发现,当jQuery获得一个trail为0(例如100)的值时,它会忽略它。所以如果我比较5>100,结果是真的。那么我该如何解决这个问题呢? 以下是HTML代码:Javascript 将输入值与0轨迹进行比较,javascript,jquery,Javascript,Jquery,我发现,当jQuery获得一个trail为0(例如100)的值时,它会忽略它。所以如果我比较5>100,结果是真的。那么我该如何解决这个问题呢? 以下是HTML代码: <form id="target"> <input type="text" id="max" value="100"/> <input type="text" id="number" /> <input id="submit" type="submit" valu
<form id="target">
<input type="text" id="max" value="100"/>
<input type="text" id="number" />
<input id="submit" type="submit" value="submit" />
</form>
在这里您可以看到演示:使用parseFloat()
,否则这些值将被视为字符串
$('#target').submit( function() {
var a = parseFloat($("#number").val());
var b = parseFloat($("#max").val());
if( a > b){
alert("exceed limit");
}
return false;
});
请参见您需要比较数值,而不是字符串值。
.val()
函数的输出是一个DOMString值,根据该值,该值表示:
因此,您的(5>100)测试实际上是“5”>“100”
,这是正确的,因为字符串是按字典进行比较的
解决办法是改变
if( a > b){
到
前缀运算符将其参数强制为数字。您可以将其乘以1,将其从字符串转换为数字,或者使用parseInt
var a = $("#number").val() * 1;
或
parseInt函数的第二个参数是基数。谢谢,您的答案是正确的,但我接受Mike的答案,因为添加+号更快,代码更少。:)
if( a > b){
if(+a > +b){
var a = $("#number").val() * 1;
var a = parseInt($("#number").val(), 10);