html中的input文本框禁止输入问题
我们在进行前端页面开发时,经常会遇到输入框禁止输入的问题,html中提供了三种方式来解决,readonly、disabled、autocomplete。严格地讲前两种才是禁止用户输入,而autocomplete只是默认清除用户的输入记录。
readonly:顾名思义,表示该输入域的值只能read,不能write,他仅仅只能与 type="text" 配合使用,可复制,可选择,可以接收焦点,后台会接收到传值。
<input type="text" name="www.xxx" readonly="readonly" />
disabled:表示禁用input元素,不可编辑,不可复制,不可选择,不能接收焦点,后台也不会接收到传值,页面显示也会变成置灰状态。
<input type="text" name="www.xxx.com" disabled="disabled" />
autocomplete:浏览器通常会记录input输入框的记录,所以在输入的时候,经常会下拉很多内容,使用autocomplete能够清除用户的输入记录,在每次重新请求页面时,记录都会清空。
<input type="text" autocomplete="off" id="number"/>
input禁止输入(禁止获得焦点)
1: readonly规定输入字段为只读可复制,但是,用户可以使用Tab键切换到该字段,可选择,可以接收焦点,还可以选中或拷贝其文本。
<input type="text" value="禁止输入,可以使用Tab键切换到该字段" readonly="readonly">
2:disabled 被禁用的 input 元素可复制,不能接收焦点,设置后文字的颜色会变成灰色。无法与 <input type="hidden"> 一起使用。
<input type="text" value="可复制,不能接收焦点,字的颜色会变成灰" disabled="disabled">
3:通过控制input的max length为0实现
<input type="text" maxlength="0">
4:οnfοcus="this.blur();"onfocuse是聚焦的意思,当你把光标放在文本框上输入的时候,就是聚焦,但这里添加了"this.blur()",blur的作用就是去除聚焦,也就是你不能把光标放在这个文本框上,换句话说就是你不能输入文本了
<input type="text" value="去除聚焦,不能输入文本" οnfοcus="this.blur();">
input输入数字和长度限制
1.type='number' 限制输入为数字,oninput判断限制长度(发现用了type='number'之后maxlength就不能用了)
<input class="inputs" type="number" value="只输入数字,长度11位" οninput="if(value.length>11)value=value.slice(0,11)" />
2.用maxlength限制长度,oninput限制输入框为纯数字
<input type="text" placeholder="请输入您的手机号" oninput = "value=value.replace(/[^\d]/g,'')" maxlength="11">
a、onkeyup = "value=value.replace(/[^\d]/g,'')"
使用 onkeyup 事件,有 bug ,那就是在中文输入法状态下,输入汉字之后直接回车,会直接输入字母
b、onchange = "value=value.replace(/[^\d]/g,'')"
![](/qrcode.jpg)
使用 onchange 事件,在输入内容后,只有 input 丧失焦点时才会得到结果,并不能在输入时就做出响应
c、oninput = "value=value.replace(/[^\d]/g,'')"
使用 oninput 事件,完美的解决了以上两种问题,测试暂时还没有出现其它问题。