2016-07-24 113 views
0

我選擇的選項:JavaScript值OPTGROUP複製到其他輸入

<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> 

和文字添加文字輸入文本:

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"; 

    } 
} 

當第一optgroup(「用戶」)的用戶選擇的選項然後在輸入文本腳本中添加名稱「user」。當用戶從第二個optgroup中選擇記錄時,腳本將輸入文本中的文本更改爲「倉庫」。但在我的腳本中,沒有任何內容被添加到輸入文本中。 demo

+0

你對JS .https使用的onload選項://jsfiddle.net/7yv12vm0/2/但你的比較是不正確'的document.getElementById(「用戶」)label'始終是用戶 –

+0

你想輸入的值是**'michal' **或**'mateusz' **或者只是說**'user' **?那部分不清楚。 –

回答

1

Demo

中的jsfiddle你提出的onload函數內部功能,所以它undifined到外scope.outherwise你會得到user兩組 document.getElementById("user").label == 'user'總是true.so它不會到別的塊您應該獲得所選組的標籤值並進行比較。

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"; 

}