您的位置:首页 > Web前端 > JavaScript

knockoutjs with绑定导致unobtrusive validation失效的问题

2013-09-02 22:42 399 查看
如果最初的时候with绑定的对象是空的,那么with绑定内部的unobtrusive validation规则在提交的时候无法生效,无法进行验证。

解决办法:

在提交的时候(或者with绑定的对象非空值以后),先清除form对象的'validation'的data:

$.removeData($form[0], 'validator');

然后调用unobtrusive validation的parse函数重新对form内的控件进行解析。

$.validator.unobtrusive.parse($form[0]);

再调用valid()函数就可以正常验证了。

with绑定的对象为空的时候,还会导致form内button(或其他控件)的jquery的事件处理代码不能正常触发。需要把button移动到with绑定范围之外。

knockoutjs 对with 的说明:

If the expression you supply evaluates to
null
or
undefined
, descendant elements will not be bound at all, but will instead be removed from the document.

If the expression you supply involves any observable values, the expression will be re-evaluated whenever any of those observables change. Then, descendant elements will be cleared out, and a new copy of the markup will be added to your document and bound in the context of the new evaluation result.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: