JQuery之简单表单验证

JQuery之简单表单验证

jsp部分:

<form:form id="inputForm" modelAttribute="user" action="${ctx}/sys/user/modifyPwd"  method="post" class="form-horizontal form-group">
		<form:hidden path="id"/>
		<sys:message hideType="1" content="${message}"/>
		<div class="control-group">
		</div>
		<table class="table table-bordered  table-condensed dataTables-example dataTable no-footer" >
		   <tbody>
			<tr>
			<span style="white-space:pre">	</span><td class="width-15 active"><label class="pull-right"><font color="red">*</font>旧密码:</label></td>
				<td class="width-35">
					<input id="oldPassword"  name="oldPassword" type="password" value="" maxlength="50" minlength="3"  class="form-control  max-width-250 "/>
				</td>
			</tr>
			<tr>
				<td class="width-15 active"><label class="pull-right"><font color="red">*</font>新密码:</label></td>
				<td class="width-35">
					<input id="newPassword" name="newPassword" type="password" value="" maxlength="50" minlength="3" class="form-control  max-width-250 required"/>
				<span style="color: red;font-size: 14px;font-family: 黑体;" id="passstrength"></span>
				</td>
			</tr>
			<tr>
				<td class="width-15 active"><label class="pull-right"><font color="red">*</font>确认新密码:</label></td>
				<td class="width-35">
					<input id="confirmNewPassword" name="confirmNewPassword" type="password" value="" maxlength="50" minlength="3" class="form-control  max-width-250 required" equalTo="#newPassword"></input>
					<span style="color: red;font-size: 14px;font-family: 黑体;" id="confirmpass" ></span>
				</td>
			</tr>	
			<tr>
				<td class="width-15 active"><label class="pull-right"></label></td>
				<td class="width-35">
					<input id="btnSubmit" class="btn btn-primary" type="button" value="保 存"/>
				</td>
			</tr>			
		</tbody>
	</table>
</form:form>


JQuery部分

<script type="text/javascript">
//<![CDATA[
	$(function(){
      	  /*
      	  *思路大概是先为每一个required添加必填的标记,用each()方法来实现。
       	  *在each()方法中先是创建一个元素。然后通过append()方法将创建的元素加入到父元素后面。
      	  *这里面的this用的很精髓,每一次的this都对应着相应的input元素,然后获取相应的父元素。
       	  *然后为input元素添加失去焦点事件。然后进行用户名、邮件的验证。
       	  *这里用了一个判断is(),如果是用户名,做相应的处理,如果是邮件做相应的验证。
          *在jQuery框架中,也可以适当的穿插一写原汁原味的javascript代码。比如验证用户名中就有this.value,和this.value.length。对内容进行判断。
          *然后进行的是邮件的验证,貌似用到了正则表达式。
          *然后为input元素添加keyup事件与focus事件。就是在keyup时也要做一下验证,调用blur事件就行了。用triggerHandler()触发器,触发相应的事件。
          *最后提交表单时做统一验证
          *做好整体与细节的处理
        */
        //如果是必填的,则加红星标识.
	//如果是必填的,则加红星标识.
	        $("form :input.required").each(function(){
	            var $required = $("<strong  style='color:red;'> *</strong>"); //创建元素
	            $(this).parent().append($required); //然后将它追加到文档中
	        });
	        //js验证 `~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】';:""'。,、?
		var pattern = new RegExp("[~'!@#$%^&*()-+_=:/\]"); 
		//限定为字母、数字或下划线的组合
		var reg=new RegExp(/[A-Za-z].*[0-9]|[0-9].*[A-Za-z]/);
			
	         //文本框失去焦点后
	        $('form :input').blur(function(){
	             var $parent = $(this).parent();
	             $parent.find(".formtips").remove();
	             //验证用户名
	             if( $(this).is('#newPassword') ){
	                    if( this.value=="" || this.value.length < 8){
	                        var errorMsg = '请输入至少8位的密码.';
	                        $parent.append('<span class="formtips onError" style="color:red;">'+errorMsg+'</span>');
	                    }
	                    else if(!reg.test(this.value)){
	                    	var errorMsg = '密码只能包含数字、字母.';
	                        $parent.append('<span class="formtips onError" style="color:red;">'+errorMsg+'</span>');
	                    } 
	                    else if(pattern.test(this.value)){
	                    	var errorMsg = '密码有非法字符.';
	                        $parent.append('<span class="formtips onError" style="color:red;">'+errorMsg+'</span>');
	                    }
	                    else{
	                        var okMsg = '输入正确.';
	                        $parent.append('<span class="formtips onSuccess" style="color:red;">'+okMsg+'</span>');
	                    }
	             }
	             //验证邮件
	             if( $(this).is('#confirmNewPassword') ){
	                if(this.value!=$("#newPassword").val() ){
	                      var errorMsg = '两次密码不一致.';
	                      $parent.append('<span class="formtips onError" style="color:red;">'+errorMsg+'</span>');
	                }else{
	                      var okMsg = '输入正确.';
	                      $parent.append('<span class="formtips onSuccess" style="color:red;">'+okMsg+'</span>');
	                }
	             }
	        }).keyup(function(){
	           $(this).triggerHandler("blur");
	        }).focus(function(){
	             $(this).triggerHandler("blur");
	        });//end blur

	        
	        //提交,最终验证。
	         $('#btnSubmit').click(function(){
	                $("form :input.required").trigger('blur');
	                var numError = $('form .onError').length;
	                if(numError){
	                    return false;
	                } 
	                $("#inputForm").submit();
	                return true;
	         });
	        
		})
	
	</script>



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值