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:
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: