10

这是一个经典的登录流程。用户可以在“新用户”或“现有用户”之间进行选择。如果用户是新用户,则登录框中的名称应针对服务器进行验证,以查看用户名是否唯一,如果是现有用户,则将跳过此检查,因为我们希望用户名已经被使用(当然)。

我在视图模型上添加了一个 [Remote] 属性,并将新/退出用户的单选按钮添加为“附加字段”。这样,如果它是现有用户,远程验证将只返回 true,如果不是,则检查数据库,以查看是否使用了用户名。

这很好用,除非用户在输入用户名后决定更改单选按钮(新的/现有的)(并且远程验证已经运行)。由于远程验证仅在用户名更改时自动运行(即具有 [Remote] 属性的属性),因此仅更改单选按钮将不会再次运行。

所以我的问题是,我怎样才能强制远程验证再次运行?我通过在用户名输入字段上触发更改/焦点/模糊事件来尝试通常的黑客攻击,但未触发调用。我考虑在单选按钮上添加一个类似的 [Remote],但这会使两个看起来相同的错误消息变得复杂,放置在相同的绝对位置。

有没有办法触发重新验证?

4

1 回答 1

19

我相信可以使用 $("#formID").validate() 触发 jquery 验证

更多选项可以在文档中找到:http ://docs.jquery.com/Plugins/validation和Brad Wilson 的博客(您还可以在评论中找到一些信息)

您是否查看过输入具有的 Data 属性,也许它已被缓存?像这样的东西。

编辑:只是为了澄清,这就是我让它工作的方式

$('#UserName').removeData('previousValue');
$('form').validate().element('#UserName');
于 2011-04-11T07:55:40.477 回答