luci-base: form.js / ui.js: tie form labels to widgets

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit 22ba6fc40933bee02c3ea93bbda952bb44bf3af1)
This commit is contained in:
Jo-Philipp Wich 2020-03-24 21:57:21 +01:00
parent 573fdc0452
commit 82fb5a67d3
2 changed files with 12 additions and 2 deletions

View file

@ -1644,7 +1644,16 @@ var CBIValue = CBIAbstractValue.extend({
if (typeof(this.title) === 'string' && this.title !== '') {
optionEl.appendChild(E('label', {
'class': 'cbi-value-title',
'for': 'widget.cbid.%s.%s.%s'.format(config_name, section_id, this.option)
'for': 'widget.cbid.%s.%s.%s'.format(config_name, section_id, this.option),
'click': function(ev) {
var node = ev.currentTarget,
elem = node.nextElementSibling.querySelector('#' + node.getAttribute('for')) || node.nextElementSibling.querySelector('[data-widget-id="' + node.getAttribute('for') + '"]');
if (elem) {
elem.click();
elem.focus();
}
}
},
this.titleref ? E('a', {
'class': 'cbi-title-ref',

View file

@ -236,7 +236,8 @@ var UICheckbox = UIElement.extend({
'name': this.options.name,
'type': 'checkbox',
'value': this.options.value_enabled,
'checked': (this.value == this.options.value_enabled) ? '' : null
'checked': (this.value == this.options.value_enabled) ? '' : null,
'data-widget-id': this.options.id ? 'widget.' + this.options.id : null
}));
frameEl.appendChild(E('label', { 'for': id }));