1.去除字符串左右两边的空格
inputObj.value.replace(/^(\s|\u00A0)+|(\s|\u00A0)+$/g, "")
2.验证用户是否输入
if(!inputObj.value.replace(/^(\s|\u00A0)+|(\s|\u00A0)+$/g, "")){
alert('empty input')
}else{
alert('not empty input')
}
3.禁止输入
方案1.通过表单属性disabled readonly来控制输入
<input type="text" value="disabled" disabled/>
<input type="text" value="disabled='disabled'" disabled="disabled"/>
<input type="text" value="readonly" readonly/>
- disabled-禁用input元素。
无法与<input type="hidden">
一起使用 - readonly-字段为只读,不能修改。
可以用tab切换到该字段
方案2.通过js来控制输入
js控制1-focus & blur
js控制2-keyup & blur
_noInput1.onfocus = function() {
this.blur();
}
_noInput2.onkeyup = _noInput2.onblur = function() {
this.value = "";
}
- focus & blur
第一种写法更简洁,体验效果更好 - keyup & blur
第二种写法代码较多,体验上有一点缺陷,输入的文字有一闪然后消失的过程
无法阻止通过鼠标复制粘贴来的文本,虽然失去焦点时会清空内容
关闭输入法
方案1.使用css ime-mode属性
inputObj.style.imeMode = 'disabled'
css非标准的ime-mode属性
- 设置或检索是否允许用户激活输入中文,韩文,日文等的输入法(ime)状态
- 取值 ime-mode : auto active inactive disabled
auto | 默认值,表示打开输入法。 |
active | 指定所有使用IME输入的字符。即激活本地语言输入法。用户仍可以撤销激活IME |
inactive | 指定所有不使用IME输入的字符。即激活非本地语言。用户仍可以撤销激活IME |
disabled | 完全禁用IME。对于有焦点的控件(如输入框),用户不可以激活IME |
ime-mode的兼容性,如图
方案2.js正则替换中文字符
inputObj.value.replace(/[\u4e00-\u9fa5]/g, "")
禁止复制与粘贴
inputObj.oncopy = function() {
return false;
}
inputObj.onpaste = function() {
return false;
}
限制只能输入数字/中文
- type=’number’,只能输入数字,在手机端调起数字键盘;在提交表单时执行验证
- pattern属性,验证输入字段的正则匹配模式,在提交表单时执行验证,适用text、search、url、telephone、mail、password
- 正则
inputObj.value.replace(/\D/g,"")
去除非数字,分别绑定到输入框的onfocus、onkeyup、onblur事件 - 正则
inputObj.value.replace(/[^\u4e00-\u9fa5]/g, "")
去除非数字,分别绑定到输入框的onfocus、onkeyup、onblur事件
限制字符串长度(不区分中英文)
方案1. maxlength属性
maxlength限制
<input type="text" maxlength="5">
- 并非所有浏览器都支持maxlength属性
- 不区分中英文和数字的编码占位
方案2. js控制
js限制
inputObj.value = inputObj.value.substr(0, maxLength);
限制字符串长度(区分中英文) 并实时提示可输入字符
测试1:还可以输入20
测试2:还可以输入20
- data-model “En”-不区分中英文(默认) “Ch”-区分中英文