是否有可能覆盖html5 stepUp和stepDown行为?我不想创建新的按钮,我想使用输入提供的控件。我一直试图以这种方式覆盖它们:

document.getElementById("elemId").stepUp = function() { }


但它似乎不起作用。

最佳答案

我建议您不要改写,而是观看更改事件,然后执行您想做的所有事情。

话虽这么说,您可以通过两种方式覆盖该行为。假设以下html

<input id="num" type="number" value="0" step="1" min="0" max="100"/>


让我们参考一下数字输入:

// Access the spinner
var spinner = document.getElementById("num");


现在,如果要覆盖所有stepUp()函数,则可以使用HTMLInputElement对象:

// Override all spinner's setup functions
HTMLInputElement.prototype.stepUp = function(num){
    console.log('All overridden: Stepping up '+num);
};


尽管您也只能覆盖该输入的stepUp()函数:

// Override only that spinner's stepUp function
spinner.stepUp = function(num){
   console.log('Stepping up '+num);
};


要查看实际操作的示例,请打开this jsFiddle

10-07 14:09