我遇到过一个场景,我们有三个输入微调器,如果任何微调器值更改,那么最初的最大值现在设置为20,那么其他微调器的最大值也应该更改。 示例:有三个微调器spinner1,spinner2,spinner3,max为20,如果最初spinner1设置为3则spinner2和spinner3应该能够选择最大值直到17,现在spinner2被选为10然后spinner3只能选择最大值7,现在如果微调器1再次变为1,则spinner2和spinner3应该能够选择剩余的20-(1 + 10)值的最大值。
答案 0 :(得分:1)
老实说,这类问题并不适合SO。当一个人来到这里寻求帮助时,我们通常希望他们自己合理地尝试编写代码,但遇到了他们无法解决的特定问题。
我们还希望提问者能够显示他们遇到问题的实际代码,并能够清楚地表达他们的代码的预期结果,以及描述他们当前的尝试如何无法满足期望。
话虽如此,我今天早上需要休息所以请看下面的内容,它应该完全符合你的需要。查看代码,如果您对某些工作有何疑问,请随时提出:
FBSDKLoginCompletion

$('.restrain').change(function(){
var $this=$(this); // cache the spinner the user interacted with
var $group=$(this).closest('.restrain-group'); // get the group that contains the spinner
var maxAllowed=$group.data('restrain-group-max'); // get the group max from the data attribute on the container
var $spinners=$.merge($group.find('.restrain').not(this), $this); // get all of the spinners for the current group, arrange the collection so that the current spinner is always last, this is VERY important
var total=0; // store our running total
$spinners.each(function(){
var $this=$(this); //cache the current spinner in the loop
var curVal=Number($this.val()); // get the current spinner's value
var newVal=total+curVal;// add the value to the running total
if(newVal>maxAllowed){ // if the running total is now higher than the maxAllowed, we've gone too high
var adjustVal=newVal-maxAllowed; // figure out how much over the total we are
var replacementVal=curVal-adjustVal; // subtract the overage from the current spinner's value
replacementVal = replacementVal <0 ? 0 :replacementVal;
$this.val(replacementVal); // set the current spinner to the lowered value
curVal=replacementVal;
}
total=total+curVal; // add the last value to the total before checking the next spinner
});
});
&#13;