そこで、PHP と jQuery を使用してこのフォーム バリデータを作成しています。PHP コードはフォームをチェックし、エラーを含むフィールドを含む配列を返します。例: {"メール":1,"パスワード":1}
しかし、今、エラーが見つからないかどうかについて懸念があります。ここでの問題は、ページのリダイレクトを防ぐために、コードの最後に「return false」を含めたことです。これは悪いコード プラクティスであると読みましたが、意図したとおりに機能する別の方法は見つかりませんでした。
2 番目の問題は、o-array を $('input').each 関数に渡す方法です。現在、何も渡されていないため、すべてのフォームが有効であると表示されます。$.ajax の代わりに $.post を使用すると、何らかの理由でこのスコープの問題は発生しません。
jQuery:
$(function() {
$('#register').submit(function() {
var url = $(this).attr('action');
var data = $(this).serialize();
$.ajax({
type: 'GET',
url: url,
data: data,
success: function(o) {
console.log(o);
$('input').each(function() {
var msgId = o[$(this).attr('name')];
console.log(o[$(this).attr('name')]);
if (msgId > 0) {
$('#listError').css('visibility', 'visible');
$('#listError').append('<li>' + $(this).nextAll('span.msg').eq(msgId - 1).text() + '</li>');
$(this).addClass('invalid');
} else if (msgId != 0) {
$(this).addClass('valid');
}
$('#listError').append('</ul>');
})
}
}, 'json');
return false;
});
});