我使用以下代码jQuery 插件:验证 http://bassistance.de/jquery-plugins/jquery-plugin-validation/:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
div.formerror
{
color: red;
margin-bottom: 6px;
margin-top: 1px;
}
input.error, select.error, label.error
{
border: 2px solid red;
background-color: #FFFFD5;
margin: 0px;
color: red;
}
</style>
<!-- <script src="http://code.jquery.com/jquery-latest.js"></script> -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript" src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#edit_form').validate({
rules: {
chooseMe: "required"
},
messages: {
chooseMe: ""
},
messages: {
name: "Name is missing",
email: {
required: "E-mail address is missing",
email: "Your email address is not valid"
}
},
highlight: function(element, errorClass, validClass) {
$(element).addClass(errorClass).removeClass(validClass);
$(element.form).find('[name='+element.name+']').each(function (i, sameName){
$(element.form).find("label[for=" + sameName.id + "]").addClass(errorClass);
});
},
unhighlight: function(element, errorClass, validClass) {
$(element).removeClass(errorClass).addClass(validClass);
$(element.form).find('[name='+element.name+']').each(function (i, sameName){
$(element.form).find("label[for=" + sameName.id + "]").removeClass(errorClass);
});
},
submitHandler: function(form) {
$("#edit_form div.formerror").hide();
alert("validated successfully - submit handler here");
},
invalidHandler: function(e, validator) {
var errors = validator.numberOfInvalids();
if (errors) {
var message = 'There are missing or invalid fields. They have been highlighted below.';
$("#edit_form div.formerror span").html(message);
$("#edit_form div.formerror").show();
} else {
$("#edit_form div.formerror").hide();
}
}
});
});
</script>
</head>
<body>
<form class="cmxform" id="edit_form" method="get" action="">
<div class="formerror" style="display: none">
<span></span>
</div>
<fieldset>
<legend>A simple comment form with submit validation and default messages</legend>
<p>
<label for="cname">Name</label>
<em>*</em><input id="cname" name="name" size="25" class="required" minlength="2" />
</p>
<p>
<label for="cemail">E-Mail</label>
<em>*</em><input id="cemail" name="email" size="25" class="required email" />
</p>
<p>
<label for="curl">URL</label>
<em> </em><input id="curl" name="url" size="25" class="phone" value="" />
</p>
<p>
<label for="ccomment">Your comment</label>
<em>*</em><textarea id="ccomment" name="comment" cols="22" class="required"></textarea>
</p>
<p>
<input class="submit" type="submit" value="Submit"/>
</p>
</fieldset>
</form>
</body>
</html>
它运行良好,但有两个问题:
- 当我提交错误、更正错误并重新提交表单时,标签会被隐藏。在这种情况下,已更正的文件是否会丢失其标签(插件放置了 display:none CSS 属性)。看起来这个 pugin 将原始标签与错误标签混合在一起,并在没有错误时隐藏它们。如何解决这个问题?
- 为什么对于 tesxtarea 字段,当我更正错误时,它会立即将类更改为成功(这意味着它已更正),而对于输入字段,我应该重新提交表单以便插件开始验证?
下面的代码解决了这个问题。关于第2项,请参阅此链接:jQuery 插件:验证 - 按键验证不起作用 https://stackoverflow.com/questions/9758153/jquery-plugin-validation-validation-on-key-up-does-not-work
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
div.formerror
{
color: red;
margin-bottom: 6px;
margin-top: 1px;
}
.error
{
border: 1px dashed red;
background-color: #FFFFD5;
margin: 0px;
color: red;
}
label.errorForLabel
{
margin: 0px;
color: red;
}
label.error{
visibility:hidden;
width:0;
height:0;
}
</style>
<!-- <script src="http://code.jquery.com/jquery-latest.js"></script> -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript" src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"></script>
<script type="text/javascript">
var errorClassForLabel = 'errorForLabel';
$(document).ready(function(){
$('#edit_form').validate({
errorClass: "error",
validClass: "valid",
rules: {
name: "required",
email: {
required: true,
email: true
},
url:{
required: true,
url:true
},
comment: "required"
},
/* onkeyup: true,*/
highlight: function(element, errorClass, validClass) {
$(element).addClass(errorClass).removeClass(validClass);
$(element.form).find('[name='+element.name+']').each(function (i, sameName){
$(element.form).find("label[for=" + sameName.id + "]").addClass(errorClassForLabel);
});
},
unhighlight: function(element, errorClass, validClass) {
$(element).removeClass(errorClass).addClass(validClass);
$(element.form).find('[name='+element.name+']').each(function (i, sameName){
$(element.form).find("label[for=" + sameName.id + "]").removeClass(errorClassForLabel);
});
},
submitHandler: function(form) {
$("#edit_form div.formerror").hide();
alert("validated successfully - submit handler here");
},
invalidHandler: function(e, validator) {
var errors = validator.numberOfInvalids();
if (errors) {
var message = 'There are missing or invalid fields. They have been highlighted below.';
$("#edit_form div.formerror span").html(message);
$("#edit_form div.formerror").show();
} else {
$("#edit_form div.formerror").hide();
}
}
});
});
</script>
</head>
<body>
<form class="cmxform" id="edit_form" method="get" action="">
<div class="formerror" style="display: none">
<span></span>
</div>
<fieldset>
<legend>A simple comment form with submit validation and default messages</legend>
<p>
<label for="name">Name</label>
<em>*</em><input type="text" id="name" name="name" size="25" minlength="2" />
</p>
<p>
<label for="email">E-Mail</label>
<em>*</em><input type="text" id="email" name="email" value="" maxlength="150" size="25"/>
</p>
<p>
<label for="url">URL</label>
<em> </em><input type="text" id="url" name="url" size="25" value="" />
</p>
<p>
<label for="comment">Your comment</label>
<em>*</em><textarea id="comment" name="comment" cols="22"></textarea>
</p>
<p>
<input class="submit" type="submit" value="Submit"/>
</p>
</fieldset>
</form>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)