需求:
1、input只能输入数字输入其它置为空
2、伪代码如下
input(e) {
let val = e.target.value;
val = val.replace(/[^\d]+/g,'')
}
问题
1、当使用中文输入法时候,打出来的英文字母会显示到input框中(英文输入法无法输入字母);
猜测
1、用的keyup事件,有可能是keyup事件的问题
需求:
1、input只能输入数字输入其它置为空
2、伪代码如下
input(e) {
let val = e.target.value;
val = val.replace(/[^\d]+/g,'')
}
问题
1、当使用中文输入法时候,打出来的英文字母会显示到input框中(英文输入法无法输入字母);
猜测
1、用的keyup事件,有可能是keyup事件的问题
如果你指的是下图这种情况,IE下貌似可以设置CSS样式ime-mode
解决,但是其他浏览器不支持,并且好像也没有什么解决
方式,虽然可以通过正则过滤内容,但是输入的时候还是会显示,type设置为number也没用。
但是,你可以把input的类型改为password,在上面放一个DIV盖住input,然后把DIV的样式pointer-events属性设置为none,监听input改变,把value放到DIV里面,就可以了
//只能输入数字
function clearNoNum(obj) {
//先把非数字的都替换掉,除了数字和.
obj.value = obj.value.replace(/[^\d.]/g, "");
//必须保证第一个为数字而不是.
obj.value = obj.value.replace(/^\./g, "");
//保证只有出现一个.而没有多个.
obj.value = obj.value.replace(/\.{2,}/g, ".");
//保证.只出现一次,而不能出现两次以上
obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
}
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
用
number
类型的输入框。样式用CSS改。