Javascript jQuery自定义验证只显示最后一个字段的错误
我用Jquery编写了以下简单的验证代码,一切正常,但只显示最后一个字段的错误。 我已开始使用错误div放置此字段集:Javascript jQuery自定义验证只显示最后一个字段的错误,javascript,jquery,forms,validation,Javascript,Jquery,Forms,Validation,我用Jquery编写了以下简单的验证代码,一切正常,但只显示最后一个字段的错误。 我已开始使用错误div放置此字段集: <fieldset data-check-id="1"> <div class="fs-error"></div> <input type="text" size="50" id="ptitle" name="title" /> <input type="text" id="address" name="p_address"
<fieldset data-check-id="1">
<div class="fs-error"></div>
<input type="text" size="50" id="ptitle" name="title" />
<input type="text" id="address" name="p_address">
</fieldset>
现在一切正常,但如果标题和地址都没有填写,则只显示地址错误(错误2)。如果我插入地址,标题输入将以红色边框突出显示,但其消息不会显示(错误1)。我做错了什么?提前感谢当出现2个错误时,只显示第二个错误,因为您正在使用此行完全重写fs error div(删除之前的错误):
只有在没有错误的情况下才想隐藏它。一种利用
HTML5
必需的,模式
属性的方法<代码>CSS
计数器
,无效
,有效
,:not()
,::在
之后,内容
,通用同级选择器<代码>~
正文{
计数器复位:错误;
计数器复位:err2;
计数器增量:err2;
}
.fs错误{
显示:无;
}
输入:非(:无效){
边框底部:2倍实心rgb(0,102,0);
}
输入:无效{
底部边框:2倍纯红;
}
输入:无效~.fs错误{
显示:块;
位置:相对位置;
顶部:-70px;
颜色:红色;
}
输入:第n个类型(1):无效~input:valid~.fs错误::after{
计数器增量:err;
内容:“错误”计数器(err);
}
输入:第n个类型(1):有效~输入:第n个类型(2):无效~ fs错误::之后{
计数器增量:错误2;
内容:“错误”计数器(err);
}
输入:第n个类型(1):无效~输入:第n个类型(2):无效~ fs错误::after{
计数器增量:err;
内容:“错误”计数器(err)”,错误”计数器(err2);
}
一,
二,
“仅显示地址错误(错误2)”似乎正在覆盖jQuery('.fs error').html('error 2')上的现有html
代码>?您也可以使用html5
,css
来满足需求。感谢您的大力帮助@Walk@XiLab没问题,这里有一个快速修复方法应该可以工作(注释行并将第二个“html()”更改为“append()”)。
function check($fs){
var ok = true;
switch($fs.attr('data-check-id')){
case '1':
$ptitle = $('#ptitle',$fs);
$address = $('#address',$fs);
//title
if ($ptitle.val().length == 0) {
ok=false;
jQuery( "#ptitle" ).css( "border-bottom", "2px solid red" );
jQuery('.fs-error').html('<span style="color:red;"> Error 1 </span>');
jQuery('.fs-error').show();
}
else{
jQuery( "#ptitle" ).css( "border-bottom", "2px solid rgb(0, 102, 0)" );
jQuery('.fs-error').hide();
}
//Address
if ($address.val().length == 0) {
ok=false;
jQuery( "#address" ).css( "border-bottom", "2px solid red" );
jQuery('.fs-error').html('<span style="color:red;"> Error 2 </span>');
jQuery('.fs-error').show();
}
else{
jQuery( "#address" ).css( "border-bottom", "2px solid rgb(0, 102, 0)" );
jQuery('.fs-error').hide();
}
break;
}
if(ok === true){
$fs.attr('data-complete', true);
return true;
}
else{
$fs.attr('data-complete', false);
return false;
}
}
function form_completeCheck(){
var ok = true;
$('fieldset').each(function(index,elem){
$this = $(this);
if ($this.attr('data-complete') != 'true') {
ok = false;
};
})
if (ok === true) {
//go go go..
return true;
}
else{
// stop
return false;
}
}
jQuery('.fs-error').html('<span style="color:red;"> Error 2 </span>');
jQuery('.fs-error').hide();