Regex从数字类型输入中替换



我有一个数字类型的输入,我想防止人们输入除数字之外的任何内容。我发现的例子适用于输入类型的文本字段,但不适用于数字字段。

效果良好:(

<input type="text" onkeyup="this.value=this.value.replace(/[^d]/,'')">

效果不佳:(

<input type="number" onkeyup="this.value=this.value.replace(/[^d]/,'')">

在JSFiddle 上自己试试

请帮忙。。。

我刚刚使用JSFiddle进行了一些简单的测试,如果<input type="number" />元素上有无效输入,则this.value属性将返回空白。

以下行显示了使用Chrome时的结果:

<input type="number" oninput="alert(this.value)">

JSFiddle演示


事实上,发生这种情况的原因是:

value属性(如果指定且不为空(必须具有值这是一个有效的浮点数。

值净化算法如下:如果元素不是有效的浮点数,然后将其设置为空字符串。

^来自HTML5草稿部分关于数字输入类型的实现


这个问题现在引起了我的兴趣,我想出了一个小办法。

<input type="number" oninput="updateNum(this)">
function updateNum(e)
{
    e.select();
    e.value = getSelection().toString().replace(/[^d]/g,'');
}

如果选择在命令之间更改的位置,这可能会有问题。

JSFiddle用于解决

如果您想接受带有小数部分(例如3.14(的数字,请参阅此DEMO

Number: <input type="number" oninput="updateNum(this)" />
function updateNum(e) {
if (isNaN(e.value)) {
    e.value = e.value.replace(/[^d]/g,'');
}

相关内容

  • 没有找到相关文章

最新更新