使用多个按钮禁用多个字段

2024-09-27 23:24:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用水瓶做的表格。它包括3个复选框和9个其他字段。如果勾选三个复选框中的一个,其中7个字段将被禁用。你知道吗

这里只是复选框的一个小示例,复选框被勾选时该字段被禁用,如果复选框被勾选,optionIf类使所选字段成为可选字段:

class OptionalIf(Optional):

    def __init__(self, otherFieldName, *args, **kwargs):
        self.otherFieldName = otherFieldName
        #self.value = value
        super(OptionalIf, self).__init__(*args, **kwargs)

    def __call__(self, form, field):
        otherField = form._fields.get(self.otherFieldName)
        if otherField is None:
            raise Exception('no field named "%s" in form' % self.otherFieldName)
        if bool(otherField.data):
            super(OptionalIf, self).__call__(form, field)

在我的班级里:

holiday = BooleanField('Holiday?', id="holiday", validators=[Optional()])
start_time = TimeField(label='Start Time', id='timepick1', format='%H:%M', validators=[OptionalIf('holiday'), OptionalIf('holiday_noAddedHours'), OptionalIf('sick')])

holiday_noAddedHourssick是其他复选框字段,它们都有自己的ID:holidayNAHsick。你知道吗

由于有七个字段需要禁用,因此我必须在脚本中包含以下内容:

document.getElementById('holiday').onchange = function(){
  document.getElementById('timepick1').disabled = this.checked;
  document.getElementById('timepick2').disabled = this.checked;
  ....
}
document.getElementById('holidayNAH').onchange = function(){
  document.getElementById('timepick1').disabled = this.checked;
  document.getElementById('timepick2').disabled = this.checked;
  ....
}

然后另一个是sickID

我想知道是否有可能缩短这个,而不是有3 document.getElementById和七行在里面,禁用字段,如果复选框?我知道只有一个ID是不可能的,因为它getElementById会得到第一个元素,所以我该怎么做呢?你知道吗

谢谢你的建议。你知道吗


Tags: selfformfieldthisdocument复选框holidaychecked

热门问题