0

使用jquery validate验证隐藏字段,因为使用了typeahead(在select上设置隐藏字段)和rateit插件(在selection上设置隐字段)

他们正在进行验证,我已正确显示和清除错误消息。

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

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

谢谢

1
  • 1
    好。。。是 啊。我知道它是隐藏的,但它与如上所述在表单上显示的实际字段相关。所以有一个地方需要重点验证,只是不知道它。
    – 杰森
    评论 2014年1月16日2:05

2个答案2

重置为默认值
4

最终以这种方式完成,并且效果很好。我为隐藏的输入添加了一个属性

前任:

<input name='watever“class=”required“focusID=”ID_TO_FOCUSTO“value=”“>

然后添加此项进行验证。如果它是可见的,它会像正常一样聚焦于该元素。如果不是,则它会聚焦到隐藏输入上属性focusID的ID。

invalidHandler:函数(表单、验证器){var errors=validator.numberOfInvalids();if(错误){if($(validator.errorList[0].element).is(“:可见”)){$('html,body').animate({scrollTop:$(validator.errorList[0].element).offset().top}, 1000);}其他的{$('html,body').animate({scrollTop:$(“#”+$(validator.errorList[0].element).attr(“focusID”).offset().top}, 1000);}}}
1
  • 最好不要将无效属性放入标记中,而更喜欢滚动到.errorList[0].element尽管如此,值得投赞成票。 评论 2014年11月10日20:28
1

您可以为Typeahead字段执行自定义规则,验证包含id值的隐藏字段。因此,如果它无效,焦点将放在typeahead字段上。

jQuery.validator.addMethod(“myCustomValidate”,函数(){//检查隐藏字段是否有值return$(“#hiddenFieldId”).value);},“您必须选择一个项目”);$(“validatorElement”).validate({忽略:“”,规则:{typeahead元素:{myCustomValidate:true}}});
2
  • 谢谢。确实为typeahead工作,但最终采用了以下解决方案来为typeahoad和rateit工作。
    – 杰森
    评论 2014年1月16日14:38
  • 仅供参考,上面的代码中有一个语法错误。试图建议编辑,但由于某种原因被拒绝。return$(“#hiddenFieldId”).value)应该返回$(“#hiddenFieldId”).val()
    – 杰森
    评论 2014年1月16日19:40

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览已标记的其他问题问你自己的问题.