2016-07-24 2 views
0

에 값 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에서 레코드를 선택하면 입력 텍스트의 텍스트가 "웨어 하우스"로 변경됩니다. 그러나 스크립트에서 입력 텍스트에는 아무 것도 추가되지 않습니다. jsfiddle에서 demo

+0

당신은 JS의 .https에 대한 사용 온로드 옵션이 있습니다. //jsfiddle.net/7yv12vm0/2/를하지만 비교가 잘못된'document.getElementById를은 ("사용자") label'는 항상 하시겠습니까 사용자 –

+0

입니다 입력 값은 **'michal' ** 또는 **'mateusz' **이거나 **'user' **라고 할 수 있습니까? 그 부분은 분명하지 않다. –

답변

1

Demo

당신은 그것이 당신이 두 그룹 document.getElementById("user").label == 'user'에 대한 user을 얻을 것이다 외부 scope.outherwise에 undifined되도록 항상 온로드 기능 내부 기능입니다 넣어 그것을 다른 블록에려고하고 있지 않다 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"; 

}