表单常用代码

Posted by 徐璇 on November 14, 2015

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的兼容性,如图
"ime-mode的兼容性"

方案2.js正则替换中文字符

inputObj.value.replace(/[\u4e00-\u9fa5]/g, "")



禁止复制与粘贴

inputObj.oncopy = function() {
    return false;
}
inputObj.onpaste = function() {
    return false;
}



限制只能输入数字/中文

type='number'
pattern=[0-9]
only number
only chinese
  • 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”-区分中英文