aralejs / validator

Form Validator Widget
aralejs.org/validator/
41 stars 28 forks source link

动态改变校验规则时的问题 #44

Closed zzjin23 closed 11 years ago

zzjin23 commented 11 years ago

就拿http://aralejs.org/validator/examples/dynamic-change-validation.html 官方这个例子说吧,首先输入了7位的数字,把radio选到「Mobile」上,然后把focus点到「号码」上,再点击一下「Phone」,这个时候校验「Mobile」的错误提示会一闪而过。

录了一个视频 http://v.youku.com/v_show/id_XNTk4MzUxNjYw.html

lizzie commented 11 years ago

这是因为事件触发的顺序是: input blur -> 旧的校验规则, 显示红色错误提示 -> $('[name=contact]').change 事件 -> 设置新的校验规则, 隐藏了错误提示, 并显示提示

因此出现错误提示一闪而过的现象

zzjin23 commented 11 years ago

能否考虑提供一个blur时exclude的api?例如在addItem时如果将radio配置进exclude,blur时获取focus所在的节点,若为radio则不进行校验(当然希望exclude中可以设置多个节点)。这样既能解决这个问题,同时也兼顾了一个比较偏门的使用场景。

lizzie commented 11 years ago

你这个考虑复杂了.

lizzie commented 11 years ago

可以考虑下其他的实现:

可以试下, 我本地试了下, 替换 blur 为 keyup, 交互比原来的好些.

文档中的示例只是为了告诉使用者可以使用动态 addItemremoveItem 来设置不同的校验规则, 实现的不是很完美

zzjin23 commented 11 years ago

改成keyup交互确实好了很多,也能解决问题,多谢