在选择表单字段中选择最接近的数量

时间:2013-10-30 16:28:19

标签: jquery

我有数量选择输入,可提供一系列数量。

如果值(objRtn.numMultiPages)与data-qty值匹配,我可以使用jquery选择一个值,但如果数量介于2个中断之间,我就会卡住,例如如果我给它一个9的数量我希望它选择10的上限值,23将选择25等。

var selVal = $('#qtySelect').find("[data-qty='"+ objRtn.numMultiPages +"']").val();
if (selVal != undefined){
   $('#qtySelect').val(selVal);
   console.log(selVal);
} else {
   alert("too many pages");
}

<select name="qtySelect" id="qtySelect" class="form-control">
   <option class="qtyValue" value="14380" data-qty="5">Quantity: 5</option>
   <option class="qtyValue" value="14381" data-qty="10">Quantity: 10</option>
   <option class="qtyValue" value="14382" data-qty="15">Quantity: 15</option>
   <option class="qtyValue" value="14383" data-qty="25">Quantity: 25</option>
   <option class="qtyValue" value="14384" data-qty="50">Quantity: 50</option>
   <option class="qtyValue" value="14385" data-qty="100">Quantity: 100 </option>
</select>

有人可以建议一种方法来选择最接近的上限值吗?

由于 大卫

2 个答案:

答案 0 :(得分:0)

简单的数学;

var rounded_value = 5 * Math.round(objRtn.numMultiPages/5);

对于较高的值,您可以自己检查一下;

if (objRtn.numMultiPages > 25 && objRtn.numMultiPages < 50 ) {
     var rounded_value = 25 * Math.round(objRtn.numMultiPages/25);
} else if (objRtn.numMultiPages > 50 ) {
     var rounded_value = 50 * Math.round(objRtn.numMultiPages/50);
}...

等。等

答案 1 :(得分:0)

试试这个:

var vals = -1;
$('#qtySelect').find("[data-qty]").each(function(i, el){
    if(objRtn.numMultiPages < $(el).data("qty") && vals === -1){
        vals = $(el).data("qty");
        return;
    }
});

var selVal = $('#qtySelect').find("[data-qty='"+ vals +"']").val();
if (selVal != undefined){
   $('#qtySelect').val(selVal);
   console.log(selVal);
} else {
   alert("too many pages");
}

JSFiddle:http://jsfiddle.net/ZLFE6/