2012-03-29 83 views
0

我正在使用JQuery自动完成,基本上lat_id和lng_id字符串太长了。JQuery autogeocomplete设置字符串长度

我需要设置它,所以它不会超过点后的6位数。

例如:

Before: 
-1.1501888001110125 
After 
-1.150188 

这是可能的,或者如果没有,有没有一个解决方法呢?

+0

应该是不-1.150189?或者你不想四舍五入 - 而且你知道地图上的标记会移动(即它不是那么准确) – ManseUK 2012-03-29 10:34:11

+0

不,不想绕它。只想在点数后取掉多余的数字,只剩下6个。 – Satch3000 2012-03-29 10:41:01

回答

1

尝试:

var mystring = "-1.1501888001110125"; 
var newstring = mystring.substr(0,(mystring.indexOf('.') + 7)); 

(其7因为加上6个字符 “”)

Working example here

修整的input

$('#inputid').change(function() { 
    var $this = $(this); 
    var $thisval = $this.val(); 
    if ($thisval.indexOf('.') > 0 && $thisval.length > 7) { 
     $this.val($thisval.substr(0, ($thisval.indexOf('.') + 7))); 
    } 
});​ 

Working example here

+0

这个解决方案唯一不好的地方就是减少了数字而不是四舍五入。如果你有1.50188899999999999这将是1.501888,而不是1.501889如果你围绕它会是什么。在某些情况下,您希望在某些情况下您不需要。 – 2012-03-29 11:24:54

+0

@ S.Visser看看OPs上的评论问题 - “没有四舍五入”,它的字符串不是数字,所以'substr'更有效 – ManseUK 2012-03-29 12:13:48

+0

抱歉,没有看到评论。只是在他的文章中看到了这个“这是可能的,或者如果不可行,有没有办法绕过它?”。但除此之外,对于通过搜索来到这里的人来说,这是一件好事。顺便说一句,这不是说你的代码是坏的或某种方式;) – 2012-03-29 12:18:38

1
function roundNumber(num, dec) { 
    var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec); 
    return result; 
} 

alert(​roundNumber(-1.32423423421421312​, 6)) 
​ 

输出:http://jsfiddle.net/PfNgh/