2012-03-29 82 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/