输入“step”不适用于jQuery和; HTML5。为什么?

时间:2014-04-25 12:08:38

标签: jquery html html5 input

我正在使用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!我需要帮助!

2 个答案:

答案 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。