绑定在元素上添加必需属性
Posted
技术标签:
【中文标题】绑定在元素上添加必需属性【英文标题】:Bind the addition of required attribute on an element 【发布时间】:2014-01-06 01:13:34 【问题描述】:是否可以使用 Kendo UI MVVM 在元素上绑定 html5 必需属性的可见性?
元素上的 required 属性表示该元素的值是必需的。从技术上讲,该属性的值也应为“必需”。
使用 Kendo UI,我可以使用
将值绑定到属性<input data-bind="attr: required: isFieldRequired "/>
但是,这仍然会在呈现的 HTML 中输出 required 属性,这不是我想要的(再次,因为它的存在表明了必需性)。
我可以监听数据源上的更改事件,并使用 jQuery 和 ViewModel 上的值手动添加或删除属性,但这并不理想。
如果有办法绑定一个属性是否被渲染,那就太好了!
【问题讨论】:
【参考方案1】:使用 Atanas Korchev 的回答(下面的链接),您只需要添加自定义绑定,然后它对我来说效果很好。
https://***.com/a/15947852/2692411
首先添加自定义绑定
kendo.data.binders.required = kendo.data.Binder.extend(
refresh: function()
var required = this.bindings.required.get();
if (required)
this.element.setAttribute("required", "required");
else
this.element.removeAttribute("required");
);
然后在您的输入中使用所需的属性
<input data-bind="required: isRequired"/>
【讨论】:
【参考方案2】:据我了解,您需要使用
data-bind="attr: data-required-msg:insuranceEmailRequiredMsg,validationMessage:insuranceValidationMessage"
和js:在viewmodel observable中定义这两个属性:
insuranceRequiredMsg:"Msg is required"
insuranceValidationMessage:"Msg is invalid"
【讨论】:
不 - 添加 data-required-msg 不会设置所需的属性。我也不相信您实际上可以通过这种方式绑定到 data- 属性。 我刚刚结束了使用视图模型来传递所需字段的列表。虽然它不是很好,但这只是意味着我可以在加载时设置所有所需的字段,这就是我的全部真的需要。然后在加载的时候,只要找到指定的控件,就用jQuery设置所需的属性。 我不清楚你的问题。您想将值设置为必需的属性吗?能解释清楚吗?以上是关于绑定在元素上添加必需属性的主要内容,如果未能解决你的问题,请参考以下文章