2011-01-16 2 views

답변

1

가능 jQuery도 복잡하지 않습니다.

<script type="text/javascript"> 
function CopyValues(oDDL, sTargetId) { 
    var arrValues = new Array(); 
    for (var i = 0; i < oDDL.options.length; i++) { 
     var curOption = oDDL.options[i]; 
     if (curOption.selected) 
      arrValues.push(curOption.value); 
    } 
    document.getElementById(sTargetId).value = arrValues.join("\n"); 
} 
</script> 

이 같은 select 태그 내에서 활성화 :

<select multiple="multiple" onclick="CopyValues(this, 'txtData');"> 

그리고 때마다 사용자 선택된 값 드롭 다운을 클릭 주어진와 텍스트 영역에 복사됩니다

는이 JS 되세요 ID : 예 :

<textarea id="txtData"></textarea> 

실시간 테스트 케이스 : http://jsfiddle.net/yahavbr/UBwML/

+0

매우 멋진 작품입니다! 감사!! 하지만 현재 텍스트를 텍스트 영역에 유지하고 현재 텍스트를 삭제하지 않고 옵션의 값을 추가하는 비틀기가 있습니까? – Aborted

+0

@Dugi 문제 없음 .. 덮어 쓰는 대신에 덧붙이면됩니다.이 작은 덧셈 기호를 추가하면됩니다 :'document.getElementById (sTargetId) .value + = arrValues.join ("\ n"); 물건 .. –

+0

고마워 고마워요 : D 조 :이 내 질문을 해결! – Aborted

1

는 "텍스트"의 ID가 있습니다

(참고 :이 훨씬 더 쉽게 물건을 만드는 jQuery framework 사용 더 아래가 아닌 jQuery를 솔루션에 대한 섹션을 참조하십시오.) :

$('select').change(function() { 
    $('#text').val($(this).find('option:selected').text()); 
}); 

이것은 이미 텍스트 영역 안에있는 텍스트를 대체합니다. 당신은 단순히 다음, (공백) 말미에 추가하려면 :

$('select').change(function() { 
    $('#text').val($('#text').val() + ' ' + $(this).find('option:selected').text()); 
}); 

순수 자바 스크립트 솔루션 :

var selects = document.getElementsByTagName('select'), 
    textarea = document.getElementById('text'); 
for (var i = 0, select; select = selects[i]; i++) { 
    select.selectedIndex = -1; 
    select.onchange = (function (s) { 
     return function() { 
      textarea.value += 
       ' ' + s.options[s.selectedIndex].innerHTML; 
      s.selectedIndex = -1; 
     }; 
    })(select); 
} 

데모 :없이 http://jsfiddle.net/Gdp6p/

+0

jQuery (OP가 jQuery를 전혀 언급하지 않음)를 사용하고 있다고 추가해야합니다. 그리고 비 jQuery 응답도 제공해야합니다. –

+0

이 하나를 시도했지만 전혀 작동하지 않았습니다. – Aborted

+0

@Dugi, 죄송합니다. jQuery 라이브러리를 사용하고있었습니다. 순수한 자바 스크립트 솔루션으로 내 대답을 업데이트하겠습니다. @ 펠릭스, 건배, 당신은 절대적으로 옳았습니다. 전혀 눈치 채지 못했습니다. –

관련 문제