我的 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:这个问题实际上有两种解决方案。一种是将 jquery UI 脚本包含在头部中,从而使其“位置”实用程序能够在“右上角”对齐错误消息。
正如其他一些贡献者所指出的,另一个解决方案是修改 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;
}
感谢所有输入。