2017-04-08 30 views
0

我有某種商店。 1條帶過濾器,1條帶物品。 過濾器欄具有輸入字段起始和終止價格 它看起來像這樣當它不應該變成真時,它變成了真的

<input id="pricefrom" type="text" placeholder="Min" style="position:relative; float: left; width:100px;"> 
<input id="priceto" type="text" placeholder="Max" style="position:relative; float: right; width:100px;"> 

而且腳本時用戶集中的是處理輸入:

$("#pricefrom").focusout(function() { 
    var from = $("#pricefrom").val(); 
    var to = $("#priceto").val(); 
    console.log("from: "+from); 
    console.log("to: "+to); 
    if(from > to){ 
     $('#pricefrom').val(to); 
     from = to; 
     console.log("from > to"); 
    } 
    drawItems(from, to); 
}); 
$("#priceto").focusout(function() { 
    var from = $("#pricefrom").val(); 
    var to = $("#priceto").val(); 
    console.log("from: "+from); 
    console.log("to: "+to); 
    if(to < from){ 
     $('#priceto').val(from); 
     to = from; 
     console.log("to < from"); 
    } 
    drawItems(from, to); 
}); 

如果用戶把以上的價格大於TO,是使其成爲均勻。輸入「150-50」=>「150-150」

但它碰巧只能正常工作1次。然後例如它具有「200-200」值。我把從價格來糾正50的價值。它從「50」到「200」「從」到「」並且使得等於200.但是它更低,地獄(從>到)如何成爲真實?

Sry英語差。

回答

2

.val()返回字符串,而不是數字,因此您正在執行詞典對比,而不是數字比較。字符串"50"大於"150"

在比較它們之前,將值轉換爲數字。

var from = parseInt($("#pricefrom").val(), 10); 
var to = parseInt($("#priceto").val(), 10); 
+0

Daaamn,當然是。我聽說過並忘記了。我是新來的編碼,所以... 工作就像一個魅力。非常感謝你 – ikebastuz

0

看起來像來自JavaScript的標準類型玩笑。比較兩個示例:

50 > 200; // gives false 
"50" > "200"; // gives true, because, "5" greater then "2" 

.val()返回一個字符串,所以您要比較字符串。比較之前調用parseInt,應該從這樣的錯誤預防:

var from = parseInt($("#pricefrom").val(), 10); 
var to = parseInt($("#priceto").val(), 10); 

附:永遠不要忘記基數爲parseInt(在我們的例子中爲10)。否則,如果在輸入中有一些類似「023」的值(從0開始),一些瀏覽器可以將其理解爲八進制數。

相關問題