Javascript 使用多个按钮禁用多个字段
我有一个用水瓶做成的水瓶。它包括3个复选框和9个其他字段。如果勾选三个复选框中的一个,则其中7个字段将被禁用 下面是复选框的一个小示例,复选框被勾选时,该字段将被禁用,如果复选框被勾选,OptionIf类将使所选字段成为可选字段: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
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