次の単純な検証コードをJqueryで作成しましたが、すべて正常に機能していますが、最後のフィールドのエラーだけが表示されます。 私はエラーのdivでこのフィールドセットを置く開始しました:私は今、すべてが正しく動作しているjQueryのカスタム検証では、最後のフィールドのエラーのみが表示されます
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;
}
}
をチェックするために、この
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;
}
}
機能のようなものを試してみた
<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番目のケースのエラーで
jQuery('.fs-error').html('<span style="color:red;"> Error 2 </span>');
:あなたは完全にこの行(前にそこにあったものを消去)とFS-エラーのdivを書き換えているので、唯一の二番目が表示されている2つのエラーがあるおかげで事前に
_ "だけアドレスエラー(エラー2)を示す" _ HTML 'exisiting上書きしているように見えますhtml( 'エラー2') '' jQuery( '。fs-error'代わりに、 'html5'、' css'を利用して要件を達成することもできます。 – guest271314