您的位置:首页 > Web前端 > JQuery

JQuery之简单表单验证

2016-10-22 14:30 190 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: