jquery验证邮箱格式并显示提交按钮


Posted in Javascript onNovember 07, 2015

简要教程
简洁、大方和直观的用户界面是我们最喜欢的网页设计。本文介绍的正是这样的一个设计风格。

jquery验证邮箱格式并显示提交按钮

jquery验证邮箱格式并显示提交按钮

如何才能做到页面的简洁大方并且人性化?大多数网站的表单采用文本提示的方法,提示用户哪里填写错了,哪里不正确,但我们应该能做得更好:填写不正确就不显示提交按钮!
HTML结构

<form class="newsletter">
 <input type="email" value="" placeholder="Enter your email address" />
 <input type="submit" value="OK" />
</form>

JAVASCRIPT:
检查输入的文本是否为一个正确的email地址,如果正确,就给表单添加特定的样式,否则不添加,通过css来控制这个样式是否显示按钮。
依赖于jQuery的做法:

$( function( $, window, document, undefined )
{
 'use strict';
 
 var form  = '.newsletter',
  className = 'newsletter--active',
  email  = 'input[type="email"]';
 
 $( form ).each( function()
 {
  var $form = $( this ),
   $email = $form.find( email ),
   val  = '';
 
  $email.on( 'keyup.addClassWhenEmail', function()
  {
   val = $email.val();
   $form.toggleClass( className, val != '' && /^([\w-\.]+@([\w-]+\.)+[\w-]{2,12})?$/.test( val ) );
  });
 });
})( jQuery, window, document );

以上代码兼容IE6以上的浏览器
如果你想关闭这项功能,可以通过关闭名称空间addClassWhenEmail来实现。

$( '.newsletter input[type="email"]' ).off( '.addClassWhenEmail' );

不使用jQuery,纯javascript的做法:

;( function( window, document, undefined )
{
 'use strict';
 
 var form  = '.newsletter',
  className = 'newsletter--active',
  email  = 'input[type="email"]',
 
  addEventListener = function( element, event, handler )
  {
   element.addEventListener ? element.addEventListener( event, handler ) : element.attachEvent( 'on' + event, function(){ handler.call( element ); });
  },
  forEach = function( elements, fn )
  {
   for( var i = 0; i < elements.length; i++ ) fn( elements[ i ], i );
  },
  addClass = function( element, className )
  {
   element.classList ? element.classList.add( className ) : element.className += ' ' + className;
  },
  removeClass = function( element, className )
  {
   element.classList ? element.classList.remove( className ) : element.className += element.className.replace( new RegExp( '(^|\\b)' + className.split( ' ' ).join( '|' ) + '(\\b|$)', 'gi' ), ' ' );
  };
 
 forEach( document.querySelectorAll( form ), function( $form )
 {
  var $email = $form.querySelectorAll( email );
 
  if( $email.length )
  {
   $email = $email[ 0 ];
   addEventListener( $email, 'keyup', function()
   {
    $email.value != '' && /^([\w-\.]+@([\w-]+\.)+[\w-]{2,12})?$/.test( $email.value ) ? addClass( $form, className ) : removeClass( $form, className );
   });
  }
 });
})( window, document );

以上代码兼容IE8+以及所有现代浏览器。
可用参数
这里有三个参数可以用来改变选择器:

var form  = '.newsletter',   // form selector
className = 'newsletter--active',  // class name for form when correct email is entered
email  = 'input[type="email"]', // email input field selector

 CSS代码
js代码用来切换样式,真正显示于隐藏则通过css来实现:

.newsletter:not( .newsletter--active ) input[type='submit']
{
 display: none;
}

以上就是为大家分享的jquery验证邮箱格式并显示提交按钮的方法,希望对大家的学习有所帮助。

Javascript 相关文章推荐
javascript比较文档位置
Apr 08 Javascript
javascript 表单的友好用户体现
Jan 07 Javascript
js+数组实现网页上显示时间/星期几的实用方法
Jan 18 Javascript
基于jquery实现的可编辑下拉框实现代码
Aug 02 Javascript
JS控制弹出新页面窗口位置和大小的方法
Mar 02 Javascript
jquery实现左右滑动菜单效果代码
Aug 27 Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
Apr 17 Javascript
javascript的replace方法结合正则使用实例总结
Jun 16 Javascript
JavaScript SHA1加密算法实现详细代码
Oct 06 Javascript
vue.js动态数据绑定学习笔记
May 19 Javascript
JavaScript时间日期操作实例小结【5个示例】
Dec 22 Javascript
React Fragment介绍与使用详解
Nov 11 Javascript
jquery判断当前浏览器的实现代码
Nov 07 #Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
Nov 07 #Javascript
js识别uc浏览器的代码
Nov 06 #Javascript
详解javascript数组去重问题
Nov 06 #Javascript
基于JavaScript实现仿京东图片轮播效果
Nov 06 #Javascript
实现非常简单的js双向数据绑定
Nov 06 #Javascript
浅析javascript中的事件代理
Nov 06 #Javascript
You might like
php5 and xml示例
2006/11/22 PHP
smarty的保留变量问题
2008/10/23 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
flash 得到自身url参数的代码
2009/11/15 Javascript
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
Javascript this 的一些学习总结
2012/08/31 Javascript
jQuery选择器全面总结
2014/01/06 Javascript
使用jquery局部刷新(jquery.load)从数据库取出数据
2014/01/22 Javascript
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
Bootstrap4一次重大更新 几乎涉及每行代码
2016/05/16 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
微信小程序 scroll-view实现锚点滑动的示例
2017/12/06 Javascript
详解如何在vue项目中引入elementUI组件
2018/02/11 Javascript
D3.js实现简洁实用的动态仪表盘的示例
2018/04/04 Javascript
node.js使用express框架进行文件上传详解
2019/03/03 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
react使用antd表单赋值,用于修改弹框的操作
2020/10/29 Javascript
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
Python补齐字符串长度的实例
2018/11/15 Python
Python3几个常见问题的处理方法
2019/02/26 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
html5 兼容IE6结构的实现代码
2012/05/14 HTML / CSS
给同事的道歉信
2014/01/11 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书
创业计划书之网吧
2019/10/10 职场文书
详解Python自动化之文件自动化处理
2021/06/21 Python
Redis调用Lua脚本及使用场景快速掌握
2022/03/16 Redis