2010-06-12 14 views
5

ठीक है, जेएस कोड के लिए ओपेरा ब्राउज़र के साथ एक समस्या प्रतीत होती है, क्योंकि यह केवल एक ही चुनिंदा टैग के भीतर चयनित अंतिम विकल्प टैग को हटा देता है, क्या कोई मेरी मदद कर सकता है ।1 से अधिक विकल्प को हटाने का चयन करें

यहाँ इस के लिए 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> 

बेशक यह एक रूप टैग के भीतर है, लेकिन वहाँ एक टन अधिक कोड इस फार्म के साथ शामिल है, लेकिन यहां इस बात के लिए प्रासंगिक जानकारी है।

यहां जेएस है जो इसे संभालना चाहिए, लेकिन केवल ओपेरा में अंतिम चयनित विकल्प को हटा देता है, अन्य ब्राउज़रों के बारे में निश्चित नहीं है, लेकिन इसे वास्तव में अंतिम चयनित विकल्प न केवल सभी चयनित विकल्पों को हटाने की जरूरत है ... 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); 
    } 
} 

इसमें क्या गलत है? मैं यह समझ नहीं एक बिट :(

धन्यवाद :)

उत्तर

8

यह jQuery के साथ ऐसा करना सबसे आसान है, लेकिन यह आप करना चाहते हैं सादे जावास्क्रिप्ट का उपयोग कर ऐसा कर सकते हैं।

आप जिस समस्या का सामना कर रहे हैं वह यह है कि जब आप ओपेरा में विकल्प सूची से किसी आइटम को हटाते हैं तो यह सभी चयनित आइटमों को अचयनित करता है, इसलिए केवल पहले हटा दिया जाता है। एक कामकाज सबसे पहले याद रखना है कि किसी भी आइटम को हटाने से पहले कौन से आइटम चुने गए थे।

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

धन्यवाद एक लाख, कभी ऐसा करने के लिए सोचा नहीं। यह वास्तव में मेरे बाहर नरक bugging था। वे सभी एक ही काम क्यों नहीं कर सकते ... argg ... अच्छा, यह विविधता की महिमा है। चीयर्स :) वैसे भी, मैं jQuery से बहुत परिचित नहीं हूं, कथित तौर पर कथित तौर पर है, लेकिन मुझे लगता है कि मैं सिर्फ एक पुराने फैशन वाला मूर्ख हूं और जेएस पसंद करता हूं। एक बार फिर धन्यवाद! :) – SoLoGHoST

5

आप इसे बहुत आसान कर सकते हैं jQuery का उपयोग कर:

$('#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); 
    } 
} 
संबंधित मुद्दे