2011-05-02 9 views
6

को छोड़कर, इनपुट विकल्प का चयन करें, मेरे पास एक बहु-चयन है जिसमें आगंतुकों के लिए कई स्रोत हैं। मैं सभी विकल्पों के शीर्ष पर एक विकल्प ("सभी" के मूल्य के साथ) भी शामिल कर रहा हूं।jquery एक

जब कोई उस विकल्प पर क्लिक करता है, तो सभी विकल्प चुने जाएंगे। और वह हिस्सा आसान है। मैंने बहु-चयन और jquery शामिल किया है जो एक क्लिक ईवेंट के लिए सुनता है।

<select name="sourceid[]" id="sourceid" style="width:230px;" multiple="multiple"> 
    <option value="all">-- Select All Sources --</option> 
    <option value="1">Internet</option> 
    <option value="2">Radio</option> 
    <option value="3">Phone</option> 
    <option value="4">Other</option> 
</select> 


$("#sourceid").click(function(){ 

    if($(this).val()=='all'){ $("#sourceid option").attr("selected","selected"); } 

}); 

अब तक यह बहुत अच्छा काम करता है! jquery स्वाभाविक रूप से शीर्ष विकल्प का भी चयन करेगा।

क्या एक विकल्प चुनने के लिए jquery को बताने का कोई तरीका है?

+0

बेहतर होगा कि तुम का उपयोग 'चा 'क्लिक' के बजाय nge'। यह बीमार भी कीबोर्ड के साथ चयन करता है। –

उत्तर

0

तो मैं समझता हूँ कि आप, मैं होता करने के लिए कोशिश कर रहे हैं सही ढंग से क्या इसके बजाय एक चेकबॉक्स सूची का उपयोग करें और उसके बाद एक ड्रॉपडाउन का उपयोग करने के बजाय सभी बक्से को चेक करें ...

+0

हां, यह एक विकल्प है। यह केवल एक वरीयता है जिसे मैं पूछ रहा हूं। – coffeemonitor

3

jQuery के not() चयनकर्ता का उपयोग करके

$("#sourceid").click(function(){ 

    if($(this).val()=='all'){ 
      $("#sourceid option").not(this) 
        .attr("selected","selected"); 
    } 

}); 
+1

अच्छे उत्तर के लिए +1 – pixelbobby

+0

@ पिक्सेलहॉबी, thnx – Neal

0

समस्या से बचने के लिए इस प्रयास करें; शीर्ष विकल्प में बस disabled जोड़ें। आप नहीं चाहते हैं कि वे उस विकल्प को सबमिट करने में सक्षम हों, वैसे भी।

<select name="sourceid[]" id="sourceid" style="width:230px;" multiple="multiple"> 
    <option value="all" disabled>-- Select All Sources --</option> 
    <option value="1">Internet</option> 
    <option value="2">Radio</option> 
    <option value="3">Phone</option> 
    <option value="4">Other</option> 
</select> 
+0

सच! दुर्भाग्यवश, क्लिक ईवेंट को पहचानने से jquery को रोकता है। – coffeemonitor

+0

@user - आह, अच्छा बिंदु। – eykanal

0

आप उपयोग कर सकते हैं इस तरह slector नहीं:

$("#sourceid :not(option[value='all'])").attr("selected", "selected"); 
2

कैसे के बारे में

$("#sourceid option").not(':first').attr("selected","selected"); 
0
$("#sourceid option[value=all]").click(function(){ 
    $(this).siblings().attr("selected","selected"); 
}); 

शायद इसकी बेहतर:

$("#sourceid option[value=all]").click(function(){ 
if($(this).siblings("[selected=selected]").size() == $(this).siblings().size()) { 
    $(this).siblings().removeAttr("selected"); 
} else { 
    $(this).siblings().attr("selected","selected"); 
} 
});