function checkSpecialChar(obj,type) {
var temp="";
if(type==1){//登录名/姓名在添加和查询时,限制如下字符:
temp="[`\\-_\\=\\[\\]\\\\;',/~!@#$%^&*()+{}|:\"<>?!@#¥%……&×()·=-{}|~——+【】\;:‘’“”,。、《》?]";
}else if(type==2){//只能数字带小数
temp="[^0123456789.]";
}else if(type==3){//配件名称、配件号,自定义配件应允许全角/半角的'-'/ '_'/'.'
temp="[`\\=\\[\\]\\\\;',/~!@#$%^&*()+{}|:\"<>?!@#¥%……&×()·={}|~+【】\;:‘’“”,。、《》?]";
}else if(type==4){//规则编号只允许输入数字
temp="[^0123456789]";
}if(type==5){//事故号/定损单号限制如下字符:
temp="[`\\=\\[\\]\\\\;',-/~!@#$%^&*()+{}|:\"<>?!@#¥%……&×()·=-{}|~——+【】\;:‘’“”,。、《》?]";
}
var val = obj.value;
var patrn = new RegExp(temp);
if (!val) {
return true;
}
if (val.match(patrn) == null) {
return true;
} else {
obj.value=obj.value.replace(patrn,"");
return false;
}
}
var previouslyObjVal ='';
var cursorVal = -1;
var statStr = '';
var statEnd = '';
var currentStrLen = 0;
var copyFlag = false;
function keyUpvalidationStrLength(obj,maxlen,encodingType){
var str = getClipboard();
str = str.replaceAll(' ','');
var encodeType = encodingType == 1?'NVARCHAR2':'VARCHAR2';
if(null != obj){
if(maxlen<obj.value.getBytes(encodeType)){
if(copyFlag){
var differLen = maxlen - currentStrLen;
if(currentStrLen==0){differLen = maxlen;};
var differStr = subStringVal(str,differLen,encodingType);
obj.value = statStr+differStr+statEnd ;
}else{
obj.value = previouslyObjVal;
}
return false;
}
}
}
function keydownvalidationStrLength(obj,maxlen,encodingType){
previouslyObjVal = obj.value;
cursorVal = getPosition(obj);
statStr = previouslyObjVal.substr(0,cursorVal);
statEnd = previouslyObjVal.substr(cursorVal,obj.value.length);
currentStrLen = previouslyObjVal.getBytes(encodeType);
var e=e || event;
var currKey=e.keyCode;
if(e.ctrlKey == true && currKey == 86 ){copyFlag = true;}
switch (currKey) {
case 8: // allow delete
case 9:
case 17:
case 36: // and cursor keys
case 35:
case 37:
case 38:
case 39:
case 40:
case 46:
case 65:
return;
default:
var encodeType = encodingType == 1?'NVARCHAR2':'VARCHAR2';
if(null != obj){
if(maxlen <= obj.value.getBytes(encodeType)){
return false;
}
}
return true;
}
}
function subStringVal(val,maxlen,encodingType){
var encodeType = encodingType == 1?'NVARCHAR2':'VARCHAR2';
var strVal = "";
var strlen = 0;
if(null != val){
if(encodeType == 'NVARCHAR2'){
return val.substring(0,maxlen);
}
if(encodeType = 'VARCHAR2'){
for(var i=0;i<val.length;i++){
var ov = val.charAt(i);
var cArr = ov.match(/[^\x00-\xff]/ig);
if(null == cArr){
strlen = strlen+1;
}else{
strlen = strlen+3;
}
if(strlen<=maxlen){
strVal += ov;
}else{
return strVal;
}
}
}
}
}
function getClipboard() {
if (window.clipboardData) {
return (window.clipboardData.getData('Text'));
}
else if (window.netscape) {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
if (!clip) return;
var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
if (!trans) return;
trans.addDataFlavor('text/unicode');
clip.getData(trans, clip.kGlobalClipboard);
var str = new Object();
var len = new Object();
try {
trans.getTransferData('text/unicode', str, len);
}
catch (error) {
return null;
}
if (str) {
if (Components.interfaces.nsISupportsWString) str = str.value.QueryInterface(Components.interfaces.nsISupportsWString);
else if (Components.interfaces.nsISupportsString) str = str.value.QueryInterface(Components.interfaces.nsISupportsString);
else str = null;
}
if (str) {
return (str.data.substring(0, len.value / 2));
}
}
return null;
}
/**
* 获取光标所在的字符位置
* @param obj 要处理的控件, 支持文本域和输入框
* @author hotleave
*/
function getPosition(obj){
//alert(obj.tagName);
var result = 0;
if(obj.selectionStart){ //非IE浏览器
result = obj.selectionStart
}else{ //IE
var rng;
if(obj.tagName == "TEXTAREA"){ //如果是文本域
rng = event.srcElement.createTextRange();
rng.moveToPoint(event.x,event.y);
}else{ //输入框
rng = document.selection.createRange();
}
rng.moveStart("character",-event.srcElement.value.length);
result = rng.text.length;
}
return result;
}
$(function(){
jQuery.each($("input"), function(i, o) {
var verify = $(o).attr('verify');
if(null != verify){
$(o).bind("keydown",function(){
keydownvalidationStrLength(o,verify);
});
$(o).bind("propertychange",function(){
keyUpvalidationStrLength(o,verify);
});
}
});
});
相关推荐
### HTML:自定义标签属性详解 #### 一、引言 HTML 作为 Web 开发的基础语言之一,提供了丰富的标签及属性来构建网页内容。在实际应用中,有时我们需要为 HTML 元素添加额外的信息或功能,这就需要用到自定义属性...
在描述中提到的“An visual feedback indicator for the MaxLength attribute”意味着该项目的核心功能是针对HTML元素的`maxlength`属性提供可视化提示。`maxlength`属性是HTML5中用于限制用户在输入字段中可以输入...
nowrap><div style="position:relative"><form name=f action=/s><input type=text name=wd id=kw size=42 maxlength=100> 百度一下id=sb><div id=sug onselectstart="return false"></div><span id=hp><a href=/...
ddl语言自定义数据库字段 <!--#include virtual="/public/back_top.asp"--> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <link href="member/css/common....
此外,如果你的项目使用了自定义的模型绑定器或者数据注解适配器,也可能会影响`[MaxLength]`和`[StringLength]`的正常工作。在这种情况下,检查并调整相关的配置或代码是必要的。 总的来说,当`[MaxLength]`在ASP...
`maxlength`是HTML5中`<input>`标签的一个属性,用于限制用户在输入框中能输入的最大字符数。例如: ```html <input type="text" name="example" maxlength="10"> ``` 在这个例子中,用户最多只能输入10个字符。 ...
内容索引:脚本资源,jQuery,Select,jQuery插件 jQuery 动态添加input、select、自定义html示例的下载,已做成了新的插件,名字好像叫jquery.EasyInsert,示例文件已打包进压缩包。可以同时添加两个(或更多),name...
**AngularJS Form 进阶:远程校验和自定义输入项** AngularJS 是一个强大的前端JavaScript框架,尤其在处理Web应用程序中的数据绑定和表单管理方面表现突出。本篇文章将深入探讨AngularJS中的表单(Form)处理,...
为了实现表单验证,HTML5提供了内置的验证属性,如`required`(确保字段非空)、`pattern`(定义输入格式)和`minlength`、`maxlength`(限制输入长度)等。 在美化方面,HTML5模板通常会结合CSS3来实现丰富的样式...