【发布时间】:2018-05-07 17:59:20
【问题描述】:
我正在尝试使用 jQuery Validate 的 errorPlacement 函数来放置错误消息,但我无法弄清楚。每当我点击提交时,输入就会向下滑动,而不是将错误放在 newsletterValidate div 中。
有人看到我在errorPlacement 代码中做错了什么吗?
$('#newsletterForm').validate({
//errorClass: 'invalid',
errorPlacement: function(error, element) {
//element.val(error[0].outerText);
//error.appendTo(element.next('div'));
error.appendTo(element.parent('div').next('div').find('#newsletterValidate'));
},
rules: {
email: {
required: true,
email: true
}
},
messages: {
email: {
required: "Please enter your email address",
email: "Please enter a valid email address"
}
},
submitHandler: function(form) {
event.preventDefault();
var datastring = $('#newsletterForm').serialize();
$.ajax({
url: 'http://localhost:8080/php/newsletterSend.php',
type: 'POST',
data: datastring
,
success: function(data) {
console.log(data);
if (data == 'Error!') {
alert('Unable to submit form!');
alert(data);
} else {
$('#newsletterInput')[0].reset();
$('#newsletterSuccess').show();
}
},
error: function(xhr, textStatus, errorThrown) {
alert(textStatus + '|' + errorThrown);
console.log('error');
}
});
}
});
#newsletterInput {
width: 70%;
border: none;
padding: 15px 10px;
outline: none;
font-size: 1.1rem;
font-family: 'Nunito', sans-serif;
display: inline-block;
background: pink;
}
#newsletterSubmit {
width: 25%;
display: inline-block;
border: none;
font-size: 1.1rem;
font-family: 'Nunito', sans-serif;
padding: 15px 10px;
cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.16.0/jquery.validate.min.js"></script>
<div>
<form id="newsletterForm">
<input type="email" id="newsletterInput" name="email" placeholder="Email Address *"><input type="submit" id="newsletterSubmit">
</form>
</div>
<div id="newsletterValidate"></div>
【问题讨论】:
-
您必须使用浏览器的 DOM 检查工具来查看您的消息的放置位置。然后相应地调整你的jQuery。
-
您还必须阅读 jQuery 文档。
parent()只向上遍历一层。在您的情况下,没有div是您的input元素的直接父级。请改用parents()。 -
@Sparky 谢谢。我试过
parents,但没有帮助。另外,我看不到错误在 dom 中填充的位置。但是,错误类正在应用于输入。 -
当您知道其确切的
id时,没有理由遍历 DOM 寻找元素,这已经是页面独有的。 DOM 遍历仅在页面包含许多潜在目标时才有意义,例如当您想要查找具有类的特定元素时。 您需要id,所以只需定位id。请参阅下面的详细答案。
标签: javascript jquery jquery-validate errorplacement