使用jquery验证来验证由于使用typeahead(在select上设置隐藏字段)和rateit插件(在select上设置隐藏字段)而隐藏的字段
他们验证正常,我有错误信息正确显示和清除。
问题在于,如果其中一个字段是第一个无效字段,则它不会聚焦,因为该元素是隐藏的。
有人知道解决这个问题吗?
感谢
答案 0 :(得分:2)
结束这样做,它运作良好。我在隐藏的输入中添加了一个属性
例如:
<input name='whatever" class="required" focusID="ID_TO_FOCUSTO" value="">
然后添加此内容进行验证。如果它是可见的,它就像正常那样专注于那个元素。如果没有,则它将焦点关注隐藏输入上的属性focusID的ID。
invalidHandler: function(form, validator) {
var errors = validator.numberOfInvalids();
if (errors) {
if($(validator.errorList[0].element).is(":visible"))
{
$('html, body').animate({
scrollTop: $(validator.errorList[0].element).offset().top
}, 1000);
}
else
{
$('html, body').animate({
scrollTop: $("#" + $(validator.errorList[0].element).attr("focusID")).offset().top
}, 1000);
}
}
}
答案 1 :(得分:1)
您可以为Typeahead字段执行自定义规则,验证包含id值的隐藏字段。因此,如果它无效,焦点将放在预先输入字段上。
jQuery.validator.addMethod("myCustomValidate", function() {
//check if hidden field has a value
return $("#hiddenFieldId").value);
}, "You must be select a item");
$('validatorElement').validate({
ignore: "",
rules : {
typeaheadElement: { myCustomValidate: true }
}
});