我想停用在某些条件下的HTML表单元素的一部分。 这似乎是这样做的理想方式:
<fieldset disabled>
<input value="one" />
<input value="two" />
</fieldset>
现在,这两个输入被禁止。 然而,这似乎在IE8被完全borked。 该输入会被禁用,但我仍然可以在其中输入。
小提琴 (不是如果的jsfiddle实际上是在IE8 的作品 )
是否有此问题的一个跨浏览器的解决方案,而无需添加禁止以任何形式的元素(这会复杂化我的脚本)。 我大概可以做一些棘手喜欢选择<fieldset>
jQuery中,然后.each()
通过所有的表单元素和禁用它们-但是,我在实际设置disabled
使用淘汰赛属性绑定所以真的没有地方加入这样的代码。 我最后的手段是使用自定义的淘汰赛绑定过禁用所有的孩子,但乐叹息。
总之: 没有 。 这背后的原因是因为缺乏对IE8的支持和disabled
上属性fieldset
元素。
资源
在IE7和IE8,属性只禁止形成在<图例>元素。
我怕你应该找像来自其他用户的答案的定制解决方案/自定义的结合。
好吧,我想出了一个Knockout.js具体实现,希望能帮助一些人在同一条船上。 这个解决方案很可能适用于其他解决方案和平台一点点努力。
首先,我创建了一个淘汰赛结合:
ko.bindingHandlers.allowEdit = {
init: function(element, valueAccessor)
{
if(!valueAccessor())
{
element.disabled = true;
element.readOnly = true;
if(element.tagName === 'FIELDSET')
{
$(':input', element).attr('disabled', 'disabled');
}
}
}
};
请注意,你必须执行update
太多,如果你想允许更改此绑定方法。 我没有这个要求。
然后,您可以使用这样的结合:
<fieldset data-bind="allowEdit: someExpression">
<input value="One" />
<input value="Two" />
</fieldset>
使用jQuery解决方案:
var disabledFiedset=$('fieldset[disabled]');
$('input',disabledFiedset).attr('disabled','disabled');
我能够做同样的使用在我的模型可观察到的所谓的编辑,然后在我输入我使用了一些data-bind="enable: editable”
,这在IE 7,8和9完全有效。
给ID到您的字段集标签(或U也可以直接在jQuery代码使用标签名称)使用下面的代码,以使使用jQuery在字段集所有字段禁用。
。$( “#字段集ID” 或 “字段集”)儿童()ATTR( “禁用”, “已禁用”);