我有一些商店。 1个带过滤器的酒吧,1个带有物品的酒吧。 过滤条具有输入字段FROM和TO的价格 看起来像这样
<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);
});
如果用户将FROM价格大于TO,则使其均匀。输入“150-50”=&gt; “150-150”
但它恰好只能正常工作一次。然后例如它具有“200-200”值。我把FROM价格改为正确值50。它将“从:50”“记录到:”200“”从&gt;到“并使FROM等于200.但是它的下限,地狱(来自&gt;)是如何成为真的?
Sry因为英语不好。
答案 0 :(得分:2)
.val()
返回字符串,而不是数字,因此您执行字典比较,而不是数字比较。字符串"50"
大于"150"
。
在比较之前将值转换为数字。
var from = parseInt($("#pricefrom").val(), 10);
var to = parseInt($("#priceto").val(), 10);
答案 1 :(得分: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);
P.S。永远不要忘记parseInt
的基数(在我们的例子中为10)。否则,如果有类似&#34; 023&#34;在输入(一个值,从0开始),一些浏览器可以将其理解为八进制数。