jqueryフォームに問題があります。フォームを作成しているこのフィドルを見ると、入力フィールドが作成されてから削除された後、アラートメッセージが次の要素(最初に配置された場所の下)にポップアップし始めます。
明確にするために:ユーザーがまだ情報を入力していない場合、アラートは正しい位置にポップアップ表示されます(赤いテキストで入力フィールドの右側に表示されます)。ただし、ユーザーが情報を入力してから削除すると、ajaxアラート(「このフィールドは必須」)が、本来あるべき場所の下のフィールドの間違った場所にポップアップ表示されます。問題を表示するには、すべてのフィールドに正しく入力してから、名前を削除してください。「このフィールドは必須です」というメッセージが電子メールフィールドにポップアップ表示されますが、これは名前フィールドに属しています。
検証を制御するjsは次のとおりです。
$(document).ready(function() {
$('#commentForm').validate({
submitHandler: function(form) {
$.ajax({
type: 'POST',
url: 'process.php',
data: $(this).serialize(),
success: function(returnedData) {
$('#commentForm').append(returnedData);
}
});
return false;
},
errorPlacement: function(error, element) {
error.insertAfter( element).position({
my:'right top',
at:'right top',
of:element
});
}
});
});
編集1:Jquery NoConflictモードを使用しても、この問題は解決されていません。2つのプラグインがどのように連携するかという問題があるようです。
編集2:この問題には実際には2つの解決策があります。1つは、jquery UIスクリプトをヘッドに含めることです。これにより、その「position」ユーティリティがエラーメッセージを「右上」に揃えることができます。
他の数人の寄稿者が指摘しているように、他の解決策は、cssを変更して設定することです。
form p {
position: relative; /* This ensures error label is positioned within the p tag */
}
label.error {
top: 0; /* This ensures that it lines up with the top of the input */
right:90px;
color: red;
position:absolute;
}
すべての入力に感謝します。