javascript - 如何修复 html 输入类型 = 'number' 中超过最大值的输入?

标签 javascript html css

我想让数字类型的html输入元素通过键盘接受输入,如果最后一次按下的数字超过最大值,那么最后一次按键应该被丢弃。

我尝试使用 javascript 来实现这一点。

这是代码

<input type="number" id = 'customer-age-input' max="120" min="0" onkeypress="javascript: if (int(this.value) > int(this.max)) this.value = 0;">

实际发生的事情与预期的不同。它接受我输入的任何输入 - '123'、'1234' 等,但是当我按下向上箭头键时,它不会增加值,因为当值小于最大值时默认情况下它会这样做。此外,当我按下箭头键时,它会将其减小到最大值。

最佳答案

int 不是当前 JavaScript 版本的内置函数。语法是parseInt(value);

在此处阅读有关 parseInt 的信息 -> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt

您可以使用 oninput 事件来检测值何时更改。如果需要,您可以在此处检查值并进行调整。 但是,请务必注意,一旦达到最大值或最小值,控件上的箭头将不会触发此事件。因此,您不能使用箭头键将其从 MAX_VALUE 滚动到 MIN_VALUE。

在这里阅读更多 -> What events does an <input type="number" /> fire when it's value is changed?

把这些放在一起......

HTML

<input type="number" id="customer-age-input" max="120" min="0" oninput="checkValue(this);" />

JavaScript

// this function will convert a string to an integer
// beware this will throw an exception if the value does not parse properly
function int(value) {
    return parseInt(value);
}

// this checks the value and updates it on the control, if needed
function checkValue(sender) {
    let min = sender.min;
    let max = sender.max;
    let value = int(sender.value);
    if (value>max) {
        sender.value = min;
    } else if (value<min) {
        sender.value = max;
    }
}

出于对您的设计的礼貌,我创建了 int 函数。您可以只使用 parseInt 代替上面代码中的自定义 int 函数。新代码看起来像这样:

JavaScript

// this checks the value and updates it on the control, if needed
function checkValue(sender) {
    let min = sender.min;
    let max = sender.max;
    // here we perform the parsing instead of calling another function
    let value = parseInt(sender.value);
    if (value>max) {
        sender.value = min;
    } else if (value<min) {
        sender.value = max;
    }
}

关于javascript - 如何修复 html 输入类型 = 'number' 中超过最大值的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56048006/

相关文章:

javascript - React Bootstrap 和 React.PropTypes 验证函数

javascript - 网站下拉按钮组件名称

javascript - 我想在 getcolor 函数传单 js 中进行条件返回

javascript - chop 每个 div 中的段落

javascript - onload 和 Jquery ready()。它们适用于任何 DOM 吗?比如表或分区?

html - 仅显示谷歌地图 API 的片段

python - 如何从 Flask 制作 html 弹出窗口?

html - CSS - float 到最大宽度

html - 使用 CSS 将图像尺寸设置为 "good"是否与在 HTML 中设置它们一样?

jquery - 移动设备的选择语句