我的代码部分正常运行。该列表被禁用,但我没有注意到我已选择" product1"然后启用列表。选择的任何其他内容都应完全禁用该列表。列出ID产品。所以我想我选择的选项的语法是什么,不确定这是否是正确的写入方式。
的VBScript
'Disables or enables list based on selection
Function enabler()
For Each opt In document.GetElementByID("customer").Options
If opt.Selected = "product1" Then
document.GetElementByID("product").Disabled = False
Else
document.GetElementByID("product").Disabled = True
End If
Next
End Function
HTA
...
<select size="5" id="product" name="ListboxUserRole" onChange="SaveListboxUserRoleValue">
<option value="1" selected="selected">product1</option>
<option value="2">product2</option>
<option value="3">product3</option>
...
<select size="5" id="customer" name="ListboxCustomer" onChange="SaveListboxCustomerValue" value="1">
<option value="1" selected="selected">customer1</option>
<option value="2">customer2</option>
<option value="3">customer3</option>
<option value="4">customer4</option>
...
答案 0 :(得分:0)
如果我做对了,您需要在customer
选择中选择product1
时启用product
选择,并禁用其他任何内容。
首先,product
选择更改事件已链接到SaveListboxCustomerValue()
。 customer
选择停用应在SaveListboxCustomerValue()
内进行处理,仅使用<body onload="enabler()">
替换<body>
。
IMO更好地重做算法以使用selectedIndex
选择对象的product
属性,然后不需要enabler()
。移除enabler()
,然后对SaveListboxCustomerValue()
进行更改:
Sub SaveListboxCustomerValue()
' enable customer if the first item in product selected
customer.disabled = product.selectedIndex <> 0
' the rest part of the code
End Sub
否则,如果您想保留 enabler()
,请阅读Option Object Properties。您当前的条件始终返回False
,因为布尔值永远不会等于字符串"product1"
。代码应该是这样的:
Sub enabler()
Dim opt
Dim match
For Each opt In product.options
match = opt.selected And opt.label = "product1"
If match Then Exit For
Next
customer.disabled = Not match
End Sub
应该在enabler()
更改时调用 customer
,添加对其的调用:
Sub SaveListboxCustomerValue()
enabler()
' the rest part of the code
End Sub