2016-11-26 1 views
0

Mon code fonctionne partiellement. La liste est désactivée mais il n'est pas attraper que j'ai sélectionné "product1", puis active la liste. Tout autre choix devrait désactiver complètement la liste. Liste avec produit d'identification. Donc je suppose que c'est quelque chose avec ma syntaxe pour l'option sélectionnée, je ne sais pas si c'est la bonne façon de l'écrire.Désactiver la liste si l'option est sélectionnée

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

Pouvez-vous mettre à jour votre code complet hta? –

+0

C'est très grand, mais j'appelle la fonction sur la charge du corps. – Avean

+0

Donc, vous voulez désactiver toute la liste 'product' lorsque vous sélectionnez' product1' dans la liste 'customer', n'est-ce pas? –

Répondre

0

Si je reçois correctement, vous devez activer la customer sélectionner lorsque product1 est sélectionné dans product sélectionner et désactiver si une autre .

Tout d'abord, product L'événement select change est lié à SaveListboxCustomerValue(). customer sélectionnez désactivation doit être traitée dans SaveListboxCustomerValue(), remplacez <body onload="enabler()"> avec juste <body>.

OMI mieux retravailler l'algorithme utiliser la propriété selectedIndex de l'objet select product, la enabler() n'est pas nécessaire alors. Retirer enabler() et apporter des modifications à 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 

Sinon, si vous voulez garder leenabler(), puis lire sur Option Object Properties. La condition que vous avez actuellement renvoie toujours False, car la valeur booléenne n'est jamais égale à la chaîne "product1". Le code devrait ressembler à ceci:

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() sera appelée à customer modifier, ajouter appel à elle:

Sub SaveListboxCustomerValue() 

    enabler() 

    ' the rest part of the code 

End Sub 
+0

Désactive toujours la liste, quoi qu'il arrive. Produit sélectionné 1 mais toujours désactivé. – Avean

+0

@Avean J'ai ajouté la solution alternative. – omegastripes

+0

vraiment sympa :) Cela a fait l'affaire. Mais si je change de nouveau à product1 il ne permet pas encore la liste. En ce moment, la sélection du produit1 active la liste, toutes les autres options sont désactivées. Tout bon. Mais si je retourne à product1 à nouveau, la liste est toujours désactivée. Des conseils? – Avean