Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用多个按钮禁用多个字段_Javascript_Python_Flask_Wtforms - Fatal编程技术网

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

Javascript 使用多个按钮禁用多个字段,javascript,python,flask,wtforms,Javascript,Python,Flask,Wtforms,我有一个用水瓶做成的水瓶。它包括3个复选框和9个其他字段。如果勾选三个复选框中的一个,则其中7个字段将被禁用 下面是复选框的一个小示例,复选框被勾选时,该字段将被禁用,如果复选框被勾选,OptionIf类将使所选字段成为可选字段: class OptionalIf(Optional): def __init__(self, otherFieldName, *args, **kwargs): self.otherFieldName = otherFieldName

我有一个用水瓶做成的水瓶。它包括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\u noaddedehours
sick
是其他复选框字段,每个字段都有自己的ID:
holidayNAH
sick

由于有七个字段要禁用,我必须在脚本中设置:

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;
  ....
}
然后另一个用于
sick
ID

我想知道是否有可能缩短它,而不是在其中有3个
document.getElementById
s和7行,如果选中该框,则禁用字段?我知道拥有一个ID是不可能的,因为它
getElementById
会获取第一个元素,那么我该怎么做呢


谢谢您的建议。

在您要更改的id列表上进行for循环怎么样。例如:

all_ids = ['timepick1', 'timepick2'];


for (i=0; i<all_ids.length; i++){
    document.getElementById(all_ids[i]).disabled = this.checked;
}
all_id=['timepick1','timepick2'];
对于(i=0;i