【发布时间】:2015-09-01 09:33:00
【问题描述】:
我想知道是否可以覆盖浏览器步进行为或在步进之前拦截和更改步进值或防止步进作为输入类型编号的函数发生。
例如,当使用向上和向下递增/递减箭头/滚动步进等递增时,我想在步进过程发生之前对其进行操作。
例如:
<input type="number" min="1.01" max="1000" id="num"/>
我尝试不提供 step 属性。这不起作用。
Step 属性只取值 'all' 和 numbers,它不取 false。
所以我不能使用任何属性禁用它。我也尝试过使用 stepUp、stepDown 函数,但是当浏览器 step 函数发生时,它不会被调用。
我基本上希望它要么根本不步进,要么如果它确实步进,然后执行自定义步进函数,在该函数中我根据其当前值决定步进值。
我尝试修改更改,但这似乎不适用于当前步骤,仅适用于下一步。
这里是javascript:
$("#num").on("keyup change focusin focusout", function (e) {
$(this).attr("step", getStep($(this).val()));
});
function getStep (val) {
val = parseFloat(val);
var step = 1;
if (val < 5) {
console.log('here');
step = 2;
} else if (val < 10) {
step = 5;
}
return step;
}
如果我输入 5,它应该增加 5,但它增加 1。下次它增加 5。如果可能,我想在步进之前覆盖步长值。
我不是试图通过使用文本输入来解决这个问题,而是试图确定是否有一种方法可以覆盖步进功能。
【问题讨论】:
-
你问的是如何禁用键盘功能?
-
我不希望它通过键盘或鼠标允许步进功能。也欢迎使用 Javascript 解决方案。
-
那为什么不使用带有 JavaScript 验证的文本输入呢?
-
@ArathiSreekumar 只需按照建议使用文本输入并在该表单输入上验证(如果数字 // null // 任何你想要的空白)表单输入,正如你被告知的那样,它将作为你会喜欢的,正如你被告知的那样。
-
听起来像X Y problem
标签: javascript jquery html