任务:
- 基础字典维护中的被考核团队性质中添加或修改时,被考核团队性质名称特殊符号未做校验;
- 指标库维护中的指标类型管理中添加或修改时,考核类型名称未做非法字符校验;
- 指标库维护中的指标项管理中添加或修改时,指标项名称未做非法字符校验;
主要应用知识:
- 正则验证,match()与test()函数的区别?
test是RegExp的方法,参数是字符串,返回值是boolean类型。match是String的方法,参数是正则表达式,返回值是数组。
案例:
//判断日期类型是否为YYYY-MM-DD格式的类型
function IsDate(){
var str = document.getElementById('str').value.trim();
if(str.length!=0){
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
var r = str.match(reg);
if(r==null)
alert('对不起,您输入的日期格式不正确!'); //请将“日期”改成你需要验证的属性名称!
}
}
//判断输入的字符是否为中文
function IsChinese()
{
var str = document.getElementById('str').value.trim();
if(str.length!=0){
reg=/^[\u0391-\uFFE5]+$/;
if(!reg.test(str)){
alert("对不起,您输入的字符串类型格式不正确!");//请将“字符串类型”要换成你要验证的那个属性名称!
}
}
}
解决办法:
- 问题1:将alert窗口弹出的值放在输入框中显示:
解决办法:不用alert弹出,当用户输入非法字符则重新输入
代码详情:
<input type="text" id="menuNameSerach" placeholder="指标类型名称"
onkeyup="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')"
onpaste="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')"
oncontextmenu = "value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')
在输入框中加入这三段代码,表示只能输入中文,英文,数字
其他更多校验请参考:JS控制文本框禁止输入特殊字符
onkeyup: 事件会在键盘按键被松开时发生;
onpaste:事件在用户向元素中粘贴文本时触发;
oncontextmenu:事件在元素中用户右击鼠标时触发并打开上下文菜单;