Jquery在无效时验证焦点到隐藏字段

时间:2014-01-15 22:23:43

标签: jquery jquery-validate

使用jquery验证来验证由于使用typeahead(在select上设置隐藏字段)和rateit插件(在select上设置隐藏字段)而隐藏的字段

他们验证正常,我有错误信息正确显示和清除。

问题在于,如果其中一个字段是第一个无效字段,则它不会聚焦,因为该元素是隐藏的。

有人知道解决这个问题吗?

感谢

2 个答案:

答案 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 }
    }
});