首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >输入值与0尾部之间的比较

输入值与0尾部之间的比较
EN

Stack Overflow用户
提问于 2013-01-08 15:29:34
回答 3查看 68关注 0票数 1

我发现当jQuery得到一个尾数为0(例如100)的值时,它会忽略它。因此,如果我比较5>100,结果是真的。那么我该如何解决这个问题呢?下面是HTML代码:

代码语言:javascript
复制
<form id="target">
    <input type="text" id="max"  value="100"/>
    <input type="text" id="number" />
    <input id="submit" type="submit" value="submit" />
</form>

下面是jquery:

代码语言:javascript
复制
$('#target').submit( function() {
  var a = $("#number").val();
  var b = $("#max").val();
  if( a > b){
     alert("exceed limit"); 
  }

return false;
});

在这里你可以看到演示:http://jsfiddle.net/yqMGG/91/

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-08 15:32:00

您需要比较数值,而不是字符串值。根据DOM Level 2.val()函数的输出是一个DOMString值,它表示:

接口HTMLInputElement : HTMLElement { ...attribute DOMString value;... }

所以你的(5 > 100)测试实际上是"5" > "100",这是真的,因为字符串是按字典顺序比较的。

解决之道就是改变

代码语言:javascript
复制
if( a > b){

代码语言:javascript
复制
if(+a > +b){

+前缀运算符将其参数强制转换为一个数字。

票数 3
EN

Stack Overflow用户

发布于 2013-01-08 15:31:30

使用parseFloat(),否则这些值将被视为字符串。

代码语言:javascript
复制
$('#target').submit( function() {
  var a = parseFloat($("#number").val());
  var b = parseFloat($("#max").val());
  if( a > b){
     alert("exceed limit"); 
  }

    return false;
});

请参阅

票数 0
EN

Stack Overflow用户

发布于 2013-01-08 15:50:31

可以将其乘以1以将其从字符串转换为数字,或者使用parseInt

代码语言:javascript
复制
var a = $("#number").val() * 1;

代码语言:javascript
复制
var a = parseInt($("#number").val(), 10);

parseInt函数的第二个参数是基数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14210142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档