我正在使用HTML5& jQuery在HTML中的输入标记中使用“step”attr。它工作得很好,但我想要做的是将默认值设置为1,然后步骤必须为33(这是再次使用javascript计算,它每次都在变化,但在这种情况下它应该是33)而我想要数字是33而不是34(因为默认值是1 +步骤33 = 34),但我想成为33,66,99 ......等等。我正在使用此代码执行此操作:
HTML:
<input type="number" min="1" name="numeration_from" value="1">
jQuery的:
$("input[name='numeration_from']").change(function () {
$(this).val(Number($(this).val() - 1));
});
$("input[name='numeration_from']").attr("step", 33);
但你可以从这里看到:http://jsfiddle.net/bulgaria_mitko/S8fC9/它做错了什么。它从1到33然后当我按下向上键时它将转到34然后转到66然后转到67然后转到99然后再转到100然后依此类推。为什么呢?
它应该是33然后是66然后是99!我需要帮助!
答案 0 :(得分:1)
问题是HTML步骤计算在更改数字时会考虑最小值。此外,当您使用输入的change
方法时,return false
的良好做法是在您更改同一输入的值时阻止循环循环。
工作小提琴:http://jsfiddle.net/bulgaria_mitko/S8fC9/
HTML:
<input type="number" min="0" name="numeration_from" step="33">
JS:
$("input[name='numeration_from']").val(1);
$("input[name='numeration_from']").change(function () {
if($(this).val() == 1){
$(this).val(Number($(this).val() - 1));
return false;
}
if($(this).val() == 0){
$(this).val(Number($(this).val() + 1));
return false;
}
});
答案 1 :(得分:0)
当您设置min = 1和step = 33时,您的输入接受以下值:1,34,67,100,... 然后在触发change-event时减去1。它接受的下一个值是减法前的值。因此,当它为34时,你减去1,所以它变为33.它接受的下一个值又是34。