2010-06-12 10 views
5

오페라 브라우저 용 JS 코드에 문제가있는 것 같습니다. 다중 선택 태그 내에서 마지막으로 선택한 옵션 태그 만 제거하기 때문에 누군가 나를 도와주세요 . 여기 하나 이상의 옵션을 여러 개 선택 취소 할 때의 문제

이에 대한 HTML이다 : 그것은 양식 태그 내에있어 당연히

<select id="actions_list" name="layouts" multiple style="height: 128px; width: 300px;"> 
    <option value="forum">forum</option> 
    <option value="collapse">collapse</option> 
    <option value="[topic]">[topic]</option> 
    <option value="[board]">[board]</option> 
</select> 

하지만,이 양식과 관련된 톤 더 많은 코드가있다,하지만 여기에 대한 관련 정보입니다.

JS를 처리해야하지만 다른 브라우저에 대한 확신이없는 Opera에서 마지막으로 선택한 옵션 만 제거하지만 마지막으로 선택한 옵션뿐만 아니라 선택한 모든 옵션을 제거해야합니다. argg

var action_list = document.getElementById("actions_list"); 
var i = action_list.options.length; 
while(i--) 
{ 
    if (action_list.options[i].selected) 
    { 
     action_list.remove(i); 
    } 
} 

무엇이 문제입니까? 나는 그것을 밖으로 알아낼 수 없습니다 하나 개의 비트 :(

감사합니다 :) jQuery 사용

답변

8

그것은 jQuery를 사용하여이 작업을 수행하는 가장 쉬운 방법이지만 당신이 원하는 할 수있는 일반 자바 스크립트를 사용하여이 작업을 수행하십시오.

문제는 Opera의 옵션 목록에서 항목을 제거 할 때 선택한 항목을 모두 선택 취소하므로 첫 번째 항목 만 제거된다는 것입니다. 일시적인 해결책은 제거하기 전에 어떤 항목을 선택했는지 먼저 기억하는 것입니다.

var action_list = document.getElementById("actions_list"); 

// Remember selected items. 
var is_selected = []; 
for (var i = 0; i < action_list.options.length; ++i) 
{ 
    is_selected[i] = action_list.options[i].selected; 
} 

// Remove selected items. 
i = action_list.options.length; 
while (i--) 
{ 
    if (is_selected[i]) 
    { 
     action_list.remove(i); 
    } 
} 
+0

감사합니다 백만, 그것을 할 생각은 결코. 이것은 정말로 나에게서 지옥을 도청하고 있었다. 왜 그들은 모두 똑같은 일을 할 수 없습니까? 그건 ... 다양성의 영광입니다. 건배 :) Bytheway, jQuery에 익숙하지는 않지만 쉽게 생각할 수 있습니다.하지만 저는 그냥 구식 인 바보가되어 JS를 선호합니다. 다시 한 번 감사드립니다! :) – SoLoGHoST

5
당신은 훨씬 쉽게 할 수

:

$('#actions_list option:selected').remove() 
+0

나는이 작동하지 라이브러리를 포함해야합니까? 그렇다면 어느 것이 필요합니까? – SoLoGHoST

+0

게시 한 코드가 작동하지 않습니다 ... arggg – SoLoGHoST

+0

@SoLoGHoST - jQuery를 다운로드하여 사용하면 문제가 없습니다. –

0
$.each($('[name="alltags"] option:selected'), function(index, value) { 
    $(this).remove(); 
}); 

조건에 따라 선택에서 여러 옵션을 제거 다중 선택을

0

을 제거하는 대신이 시도 :

while(SelectBox.length > 1){ 
    if(SelectBox[SelectBox.length -1].text != "YourCondition"){ 
     SelectBox.remove(SelectBox.length -1); 
    } 
}