近日在做项目的时候部分需要用到表单验证,原本想用插件进行验证的,结果发现只需要验证一个地方,就想自己用js写一下,过程中发现一个问题,在验证错误的时候需要点击submit时无法提交,这边就这个问题进行说明一下。
功能说明:
1.为空时,提交的时候会进行提示且无法提交。
2.名字长度不符时,失去焦点时会提示。
3.会检测后台数据库,看相册命名是否重复。
4.以上提示在提交表单时如果不符合,均会进行提示
html:
<form id="mayform" class="form" action="<c:url value='/pet/createAlbum'/>" method="post">
<div class="form_div">
<div class="album_name">相册名:<input type="text" class="albumName" name="albumName" placeholder="输入相册名称"></div>
<br/>
<br/>
<div class="album_kind">
类 型:
<select name="kind">
<option value="humanity">人文</option>
<option value="pet">宠物</option>
<option value="memory">回忆</option>
<option value="view">风景</option>
</select>
</div>
<br>
<br>
<div class="submit"><input id="submit" type="submit" value="创建相册"></div>
</div>
</form>
JS:
<script type="text/javascript">
$(function(){
reg_albumName=/^.{2,20}$/gi;//g表示全局
var msg="";
var submitBtn = document.getElementById("submit");
var bool=0;//0代表为NULL;1代表成功;2代表相册名存在;3代表名字不符合
$(".albumName").blur(function(){
bool=false;
var _html="<span id='errormsg' style='font-size:12px;color:red;'>验证成功</span>";
var albumName=$(this).val();
$(".albumName").parent().next("#errormsg").remove();
if(reg_albumName.test(albumName)){
$.post("validAlbumName",{
albumName:albumName
},function(data){
if(data=="success"){
bool=1;
$(".albumName").parent().after(_html);
}else {
bool=2;
_html="<span id='errormsg' style='font-size:12px;color:red;'>该相册名已存在,请重新命名</span>";
$(".albumName").parent().after(_html);
}
});
}else {
bool=3;
_html="<span id='errormsg' style='font-size:12px;color:red;'>长度必须为2-20个字符</span>";
$(".albumName").parent().after(_html);
}
});
submitBtn.onclick = function (event) {
$(".albumName").parent().next("#errormsg").remove();
if(bool!=1)
{
if(bool==0)
$(".albumName").parent().after("<span id='errormsg' style='font-size:12px;color:red;'>相册名不能为空</span>");
if(bool==2)
$(".albumName").parent().after("<span id='errormsg' style='font-size:12px;color:red;'>该相册名已存在,请重新命名</span>");
if(bool==3)
$(".albumName").parent().after("<span id='errormsg' style='font-size:12px;color:red;'>长度必须为2-20个字符</span>");
return false;
}
else return true;
};
});
</script>