2017-05-30 25 views
3

我有两个数字输入相互绑定,以1000为单位递增,一个是上限,一个是下限范围。每当下范围设定为高于上范围时,上范围自动更改'值'和'最小'属性以匹配下范围值。然而,每当上范围输入通过增大下范围值达到十个阈值(9000,90000等)的功率时,它就停止,而下范围能够继续。有谁知道这是为什么,以及如何阻止这种情况发生?当增加十(1000,10000,100000等)的功率时,Jquery绑定数字输入不起作用

https://jsfiddle.net/tg0ck5r1/

HTML:

<input type="number" id="upperBidRange" step="1000" > 
<input type="number" id="lowerBidRange" step="1000" min="1000" value="1000"> 

JS:

function SetBidIncrementAmountAndUpperBidRangeMins() { 
     $('#upperBidRange').attr('min', $('#lowerBidRange').val()); 
    } 

function SetBidIncrementAmountAndUpperBidRangeValues() { 
    $('#upperBidRange').val($('#lowerBidRange').val()) 
} 

$(SetBidIncrementAmountAndUpperBidRangeMins); 
$(SetBidIncrementAmountAndUpperBidRangeValues); 

$('#lowerBidRange').bind('keyup mouseup onwheel input keypress change paste', function() { 
    SetBidIncrementAmountAndUpperBidRangeMins(); 

    if ($('#lowerBidRange').val() > $('#upperBidRange').val()) { 
    $(SetBidIncrementAmountAndUpperBidRangeValues); 
    } 
}); 
+0

无法理解的要求 – brk

回答

2

input总是存储字符串,因此.val()this.value总会给你一个字符串。
if (String > String) {不会给你想要的,因为你想要的数字

相反,使用parseInt(value, radix)MDN Docs

parseInt($('#lowerBidRange').val() , 10) 

方法如下:

jQuery(function($) { 
 
    // DOM is now ready and $ alias secured 
 

 
    var $upper = $('#upperBidRange'), 
 
     $lower = $('#lowerBidRange'); 
 

 
    function setUpperMin() { 
 
    $upper.attr('min', $lower.val()); 
 
    } 
 

 
    function setUpperVal() { 
 
    $upper.val($lower.val()); 
 
    } 
 

 
    setUpperMin(); 
 
    setUpperVal(); 
 

 
    $lower.on('input', function() { 
 

 
    setUpperMin(); 
 

 
    var lowerVal = parseInt(this.value, 10), 
 
     upperVal = parseInt($upper.val(), 10); 
 

 
    if (lowerVal > upperVal) { 
 
     setUpperVal(); 
 
    } 
 

 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<input type="number" id="upperBidRange" step="1000">UPPER 
 
<br> 
 
<input type="number" id="lowerBidRange" step="1000" min="1000" value="1000">LOWER

一个简单的变体都将使用一元+字符串→数转换

$lower.on('input', function() { 

    setUpperMin(); 

    if (+this.value > +$upper.val()) { 
     setUpperVal(); 
    } 

    }); 
相关问题