有什么办法立刻禁用一堆表单元素?(Is there any way to disable a bun

2019-08-18 01:12发布

我想停用在某些条件下的HTML表单元素的一部分。 这似乎是这样做的理想方式:

<fieldset disabled>
    <input value="one" />
    <input value="two" />
</fieldset>

现在,这两个输入被禁止。 然而,这似乎在IE8被完全borked。 该输入被禁用,但我仍然可以在其中输入。

小提琴 (不是如果的jsfiddle实际上是在IE8 的作品

是否有此问题的一个跨浏览器的解决方案,而无需添加禁止以任何形式的元素(这会复杂化我的脚本)。 我大概可以做一些棘手喜欢选择<fieldset> jQuery中,然后.each()通过所有的表单元素和禁用它们-但是,我在实际设置disabled使用淘汰赛属性绑定所以真的没有地方加入这样的代码。 我最后的手段是使用自定义的淘汰赛绑定过禁用所有的孩子,但乐叹息。

Answer 1:

总之: 没有 。 这背后的原因是因为缺乏对IE8的支持和disabled上属性fieldset元素。

资源

在IE7和IE8,属性只禁止形成在<图例>元素。

我怕你应该找像来自其他用户的答案的定制解决方案/自定义的结合。



Answer 2:

好吧,我想出了一个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>


Answer 3:

使用jQuery解决方案:

var disabledFiedset=$('fieldset[disabled]');
$('input',disabledFiedset).attr('disabled','disabled');


Answer 4:

我能够做同样的使用在我的模型可观察到的所谓的编辑,然后在我输入我使用了一些data-bind="enable: editable” ,这在IE 7,8和9完全有效。



Answer 5:

给ID到您的字段集标签(或U也可以直接在jQuery代码使用标签名称)使用下面的代码,以使使用jQuery在字段集所有字段禁用。

。$( “#字段集ID” 或 “字段集”)儿童()ATTR( “禁用”, “已禁用”);



文章来源: Is there any way to disable a bunch of form elements at once?