javascript - Internet Explorer 处理数字输入的解决方法

标签 javascript html internet-explorer

我在 Internet Explorer 中遇到数字输入字段的问题。通常,此字段使用浏览器的区域设置来确定如何处理逗号。例如,在美国,逗号被简单地禁止输入,而在其他国家,它们可能被用来表示小数点。但是,此功能在 IE 中失效,逗号始终被视为小数点。这记录在案 here但是我还没有找到解决这个问题的有效解决方案。任何尝试获取该值并在 Javascript 中修改它的尝试都会失败,因为该值已被浏览器修改。对此有任何已知的解决方案吗?

注意:这是一个有angular的Node项目。

最佳答案

您可以使用 JavaScript OnKeyPress 事件来检查按下的键以限制输入,然后将数字格式化为仅包含小数点,代码如下:

<script>
    function handleKeyPress(e) {
        var newValue = e.target.value + e.key;

        if (
            // It is not a number nor a control key?
            isNaN(newValue) &&
            e.which != 8 && // backspace
            e.which != 17 && // ctrl
            newValue[0] != '-' || // minus
            // It is not a negative value?
            newValue[0] == '-' &&
            newValue[0] == ',' &&
            newValue[0] == '。' &&
            newValue[0] == ',' &&
            isNaN(newValue.slice(1)))

            e.preventDefault(); // Then don't write it!
    }
</script>
<input type="number" onKeyPress="handleKeyPress(event);" />

截图如下:

enter image description here

[注意] 上面的代码示例在 IE 9+ 上运行良好。

关于javascript - Internet Explorer 处理数字输入的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57366443/

相关文章:

javascript - ember + 找不到模块 `@ember/application`

javascript - Js - 如何每次都获取图像大小

javascript - 如果用户不接受 JS 确认消息,如何检查先前选择的单选按钮?

html - 使用 R (rvest) 将 html 文本抓取到带有没有清晰模式的分隔符的表中

css - IE 为每个 li 元素添加额外的 top-margin

javascript - 如何更改数组中对象的值?

html - CSS水平菜单向左浮动失去背景颜色

javascript - AM 图表在轴中显示固定范围

html - IE8 中的新属性

html - IE 7 CSS 显示问题