带ToolTip验证框JS组件
来源:互联网 发布:qt编程用什么软件 编辑:程序博客网 时间:2024/06/05 20:25
本组件依赖JQuery
本人测试的JQuery 是1.8,
兼容IE8,IE9,谷歌,火狐等。
/** * 验证输入框 * @param {Object} input */function ValidateCompent(input) { var _input = $(input).clone(true); _input.css("height", $(input).css("height")); _input.css("width", $(input).css("width")); var border = _input.css("border"); this.successIconClass = "icon-tick"; this.validate = false; this.faileIconClass = "icon-times"; var $validateRoot = $('<div class="validate-v1-container"><div class="validate-v1-tooltip"></div></div>'); var $tooltip = $validateRoot.children(".validate-v1-tooltip"); var $input = _input; if($input != undefined) { var maxWidth = $input.css("width"); var maxHeight = $input.css("height"); $validateRoot.css("display", "inline"); $validateRoot.css("position", "relative"); $validateRoot.css("width", maxWidth); $validateRoot.css("height", maxHeight); $tooltip.css("width", maxWidth); $tooltip.css("padding", "0px 5px"); $tooltip.css("position", "absolute"); $tooltip.css("top", "0px"); $tooltip.css("z-index", "999999"); $tooltip.css("background-color", "white"); $tooltip.css("border", "solid 1px rgb(188,188,188)"); $tooltip.css("left", parseInt(maxWidth) + 10 + "px"); $tooltip.hide(); var validateOption = $input.attr("data-vali-option"); if(validateOption != undefined) { validateOption = JSON.parse(validateOption); var that = this; var regvali = new Array(); $tooltip.hide(); if(validateOption.length == 0) { return; } for(var i = 0; i < validateOption.length; i++) { var message = validateOption[i].message; var pattern = validateOption[i].pattern; var reg = new RegExp(pattern); var messageView = new ValidateMessage(message, that.faileIconClass); regvali.push({ "reg": reg, "view": messageView }); $tooltip.append(messageView.dom); } $tooltip.css("height", (parseInt(maxHeight) + 15) * validateOption.length); $input.on("focus propertychange input", function(e) { $tooltip.show(); for(var i = 0; i < regvali.length; i++) { if(regvali[i].reg.test($input.val())) { regvali[i].view.setIconClass(that.successIconClass); regvali[i].view.dom.css("color", "green"); } else { regvali[i].view.setIconClass(that.faileIconClass); regvali[i].view.dom.css("color", "red"); } } }) $input.on("blur", function(e) { for(var i = 0; i < regvali.length; i++) { if(regvali[i].reg.test($input.val())) { regvali[i].view.setIconClass(that.successIconClass); $input.css("border", border == undefined ? "border 1px solid rgb(188,188,188)" : border); that.validate = true; } else { regvali[i].view.setIconClass(that.faileIconClass); $input.css("border", "1px solid red"); that.validate = false; break; } } $tooltip.hide(); }); $validateRoot.append($input); } else { return; } } this.dom = function() { return $validateRoot; } function ValidateMessage(message, iconFontClass) { var dom = $('<div class="validate-message"><span class="vticon"></span><span class="vmessage"></span></div>'); var $icon = dom.children(".vticon"); var $message = dom.children(".vmessage"); $message.css("line-height", "28px"); $message.css("padding", "5px 5px"); $message.css("padding-right", "10px"); $message.css("word-break", "break-all"); $message.css("word-wrap", "break-word"); $message.css("font-size", "14px"); $message.css("position", "relative"); $message.css("z-index", "999999"); this.setIconClass = function(iconClass) { $icon.removeClass(); $icon.addClass("vticon"); $icon.addClass(iconClass); } this.getIcon = function() { return $icon; } this.setMessageText = function(_message) { $message.html(_message); } this.getMessageText = function() { return $message; } this.setIconClass(iconFontClass); this.setMessageText(message); this.dom = dom; } $validateRoot.insertAfter($(input)); $(input).remove();}
以下是HTML代码
<input id="test" data-vali-option='[{"pattern":"[1-9]+","message":"只能输入1-9的数"},{"pattern":"[a-z]+","message":"只能输入a-z的数"}]' />
使用方法如下
$(function(){ var c = new ValidateCompent("#test");});
获取验证结果
$(function(){ var c = new ValidateCompent("#test"); $("#test").click(function(){ console.log(c.validate); });});
自定义显示方案
$(function(){ var c = new ValidateCompent("#test"); $("#test").click(function(){ console.log(c.validate); }); c.dom().addClass("你的样式类");});
设置图标字体样式
$(function(){ var c = new ValidateCompent("#test"); $("#test").click(function(){ console.log(c.validate); }); c.successIconClass = "";//成功时的样式 c.faileIconClass = "";//失败时的样式});
效果图如下
分别是成功,部分成功,全部失败选中,未选中的样式效果,(勾叉是用的字体css,建议自行寻找字体替代)
优化:去除textchange事件,改为propertychange + input实时监控事件。
阅读全文
0 0
- 带ToolTip验证框JS组件
- Tooltip(提示框)组件
- js tooltip用于验证输入方法
- 小型的js验证组件
- 自定义ToolTip组件
- 如何使用 ToolTip 组件
- javascript tooltip dw_viewport.js tooltip.js
- jquery.js+jquery.corner.js实现tooltip提示框
- 自定义控件(js弹出框方式和自带验证控件)验证textbox
- 自定义控件(js弹出框方式和自带验证控件)验证textbox
- 自定义控件(js弹出框方式和自带验证控件)验证textbox
- 小莫的成神之旅(一)原生js封装组件tooltip
- js实现toolTip
- bootstrap tooltip.js解析
- js验证带小数点的数字
- 源码:用js验证表单组件值
- “js+flash上传组件”客户端验证文件大小
- JS表单验证组件浅讲
- MySQL不能启动 FTS optimize thread exiting
- Hdu 6168 Numbers【思维+暴力】
- CodeForces 616C The Labyrinth (二维并查集)
- VS2012、VS2013启用angularjs智能提示Intelligence
- filter/listener/interceptor区别与联系
- 带ToolTip验证框JS组件
- 斯坦福大学公开课机器学习课程(Andrew Ng)九经验风险最小化
- Qt 5.9.1、VS 2017创建DLL的互相调用
- Ubuntu 10.04下unrar的命令使用
- Design库-TabLayout属性详解
- win10+py-faster-rcnn
- Android库包含库代码(非第三方库)
- Linux命令
- Spring 过源码