我正在使用jQuery validator plugin上的this signup form。
我遇到的问题是,如果我将焦点从输入框中移出并且包含错误(无效的电子邮件或空框),然后我继续正确填写表单,无论上一个错误是什么不会消失。
所以,例如,如果我错过了' @'填写我的电子邮件地址并获取"请输入有效的电子邮件地址。"错误,这个错误仍然存在,即使我把'' @'英寸
这是我用来初始化的代码:
$(document).ready(function()
{
$('#form').validate(
{
rules:
{
email:
{
required: true,
email: true
}
},
errorPlacement: function(error, element)
{
$('#hidden').html(error);
}
});
});
以下是我的表格:
<form id="form" role="form" class="form-inline" method="POST">
<p id="p">Get notified when Shopaholic launches</p>
<input type="email" name="email" class="form-control input-lg" id="inputEmail" placeholder="Enter email">
<button type="submit" class="btn btn-primary btn-lg" data-dismiss="modal">Notify me</button>
</form>
<div type="hidden" id="hidden" class="p"></div>
更新
按照Sparky的回答,有效的代码是:
$(document).ready(function()
{
$('#form').validate(
{
rules:
{
email:
{
required: true,
email: true
}
},
errorLabelContainer: "#hidden",
errorPlacement: function(error, element)
{
error.insertAfter(element);
}
});
});
答案 0 :(得分:2)
这打破了插件...
errorPlacement: function(error, element) {
$('#hidden').html(error);
}
error
是一个对象,而不是HTML,element
是触发错误的输入对象。
默认功能是:error.insertAfter(element)
无论自定义函数是什么,您都应该使用error
和element
对象作为插件自动切换其error
对象的可见性。
如果您不想要label
内的消息,或者您希望将所有消息放在另一个容器中,还可以使用其他选项。
请在此处查看所有选项:http://jqueryvalidation.org/validate/
答案 1 :(得分:0)
请改用:
$(document).ready(function()
{
$('#form').validate(
{
rules:
{
email:
{
required: true,
email: true
}
},
messages: {
email: "Please enter a valid email address."
}
});
});