Is there any way to disable a bunch of form elements at once?

前端 未结 5 1923
既然无缘
既然无缘 2021-02-02 14:42

I\'d like to disable a section of HTML form elements depending on some conditions. This seems to be the ideal way to do that:

<
相关标签:
5条回答
  • 2021-02-02 15:07

    Give the id to your fieldset tag(or u can also use tag name directly in jquery code) & use following code to make all the fields disable in that fieldset using jquery.

    $("#fieldset id" or "fieldset").children().attr("disabled", "disabled");

    0 讨论(0)
  • 2021-02-02 15:16

    Solution using jQuery:

    var disabledFiedset=$('fieldset[disabled]');
    $('input',disabledFiedset).attr('disabled','disabled');
    
    0 讨论(0)
  • 2021-02-02 15:19

    In short: No. The reason behind this is because the lack of support in IE8 and the disabled attribute on the fieldset element.

    Source

    In IE7 and IE8, the attribute only disables form elements in the < legend >.

    I'm afraid you should look for a custom solution like the answers from other users / your own custom binding.

    0 讨论(0)
  • 2021-02-02 15:21

    Ok, I've come up with a Knockout.js specific implementation that hopefully will help some other people in the same boat. This solution could probably be adapted for other solutions and platforms with a little effort.

    First, I created a Knockout binding:

    ko.bindingHandlers.allowEdit = {
       init: function(element, valueAccessor)
       {
          if(!valueAccessor())
          {
             element.disabled = true;
             element.readOnly = true;
    
             if(element.tagName === 'FIELDSET')
             {
                $(':input', element).attr('disabled', 'disabled');
             }
          }
       }
    };
    

    Note, you'd have to implement the update method too if you wanted to allow changes to this binding. I didn't have this requirement.

    You could then use the binding as such:

    <fieldset data-bind="allowEdit: someExpression">
       <input value="One" />
       <input value="Two" />
    </fieldset>
    
    0 讨论(0)
  • 2021-02-02 15:26

    I was able to do something similar using an observable in my model called editable and then in my input I used a data-bind="enable: editable” and this totally works in IE 7, 8 and 9.

    0 讨论(0)
提交回复
热议问题