最开始,满心欢喜的以为问题很简单,在网上搜了几个正则,在谷歌的调试界面试了一下发现可以。就以为结束了,然而在部分手机发现无法兼容,比如我自己的小米~
下面贴几个比较好检索到的方法。
1.根据空格的ascii码去做一些事情,当然除了粗暴的return false;我们还可以用
returnValue = false
preventDefault();
stopPropagation();
这几个去阻止事件冒泡或阻止事件的默认行为。
/**
* 禁止空格输入
* @param e
* @returns {Boolean}
*/
function banInputSapce(e)
{
var keynum;
if(window.event) // IE
{
keynum = e.keyCode
}
else if(e.which) // Netscape/Firefox/Opera
{
keynum = e.which
}
if(keynum == 32){
return false;
}
return true;
}
2.通过在input上绑定事件 执行正则来做
<input type="text" onkeyup="this.value=this.value.replace(/\s+/g,'')">
3.上面两种都有瑕疵,无法完美的兼容PC与移动,下面写一个更好的方法,就是有点长~
/**
* 限制输入字符长度
* @param elm 元素
* @param characterInterva 字符长度
*/
restrictedCharacter : function ( elmID , characterInterva ) {
var input = document.getElementById(elmID);
var str0 = input.value;
String.prototype.lenB = function () {
return this.replace(/[^\x00-\xff]/g, "**").length;
};
//先判断浏览器是不是万恶的IE,没办法,写的东西也有IE使用者
var bind_name = 'input';
if (navigator.userAgent.indexOf("MSIE") != -1){
bind_name = 'propertychange';
}
$('#'+elmID).bind(bind_name, function(){
var str = input.value;
if (str.lenB() > characterInterva) {
input.value = str0;
} else {
str0 = str
}
})
}
网友评论