2016-07-24 1 views
0

j'avoir choisi l'option:JavaScript copie valeur optgroup à autre entrée

<form> 
<select name="sel" id="sel" onchange="run()"> 
<option selected disabled>Wybierz...</option> 
    <optgroup id="user" value="user" label="user"> 
    <option value="1">michal</option> 
    <option value="2">mateusz</option> 
    </optgroup> 
    <optgroup id="warehouse" value="warehouse" label="warehouse"> 
    <option value="1">kosz</option> 
    <option value="2">zaginione</option> 
    </optgroup> 
</select> 
</form> 


<input type="text" name="copy" id="copy"></input> 

et un script pour ajouter du texte dans le texte d'entrée:

function run() { 
    if(document.getElementById("user").label == 'user'){ 

     document.getElementById("copy").value = "user"; 

    } else if (document.getElementById("warehouse").label == 'warehouse') { 

     document.getElementById("copy").value = "warehouse"; 

    } 
} 

Lorsque l'utilisateur option sélectionnée avec le premier optgroup ("utilisateur") puis, dans le script de texte d'entrée, ajoutez le nom "utilisateur". Lorsque l'utilisateur a sélectionné les enregistrements de la deuxième optgroup, le script change le texte du texte d'entrée en "entrepôt". Mais dans mon script, rien n'est ajouté au texte d'entrée. demo

+0

vous avez l'option d'utilisation onload pour js .https. //jsfiddle.net/7yv12vm0/2/ mais votre comparaison est incorrect 'document.getElementById ("utilisateur") label' est toujours l'utilisateur –

+0

Voulez-vous la valeur de l'entrée est ** 'michal' ** ou **' mateusz' ** ou juste ** 'user' **? Cette partie n'est pas claire. –

Répondre

1

Demo

dans jsFiddle vous avez la fonction mettre à l'intérieur fonction onload il est donc undifined à scope.outherwise externe, vous obtiendrez user pour les deux groupes document.getElementById("user").label == 'user' est toujours true.so il ne va pas au bloc autre .vous devriez obtenir la valeur d'étiquette du groupe sélectionné et le comparer.

var lable=event.target.options[event.target.selectedIndex].parentNode.label // get lable value of clicked group 
if(lable == 'user'){ 

    document.getElementById("copy").value = "user"; 

} else if (lable == 'warehouse') { 

    document.getElementById("copy").value = "warehouse"; 

}