jQuery 不显眼的验证插件(最初是为 ASP.Net MVC3 构建的)要求将您input
的 s 放置在form
元素内。所以如果没有form
插件将无法工作。
因此,修改您的模板以包含一个表单:
<script type="text/template" id="loginTemplate">
<form id="myform">
<label>Username</label>
<input type="text" name="username" id="username" data-val="true"
data-val-required="user name required"/>
<span data-valmsg-for="username" data-valmsg-replace="true"></span>
<input type="button" id="submit" value="Validate"/>
</form>
</script>
注意:我也更改data-val-required="true"
为data-val-required="user name required"
因为data-val-required
您指定了错误消息。
为了不显眼的验证工作,您需要$.validator.unobtrusive.parse
在 Backbone 视图附加到 DOM 后调用。要做到这一点,有多种退出方式。
一是使用_.defer()
函数:
render: function() {
var tmpl = _.template(this.template);
this.$el.html(tmpl);
_.defer( function(){ $.validator.unobtrusive.parse(tmpl); });
return this;
}
然后您可以使用以下代码手动触发不显眼的验证
validateForm: function() {
$("#myform").data('unobtrusiveValidation').validate();
}
最后这里是一个有效的JSFiddle。