चेक करें कि क्या विकल्प jQuery के साथ चुना गया है, यदि डिफ़ॉल्ट नहीं है


207

JQuery का उपयोग करते हुए, आप यह कैसे जांचते हैं कि क्या चयन मेनू में कोई विकल्प चुना गया है, और यदि नहीं, तो चयनित विकल्पों में से एक को असाइन करें।

(मैं सिर्फ विरासत में मिला है एक अनुप्रयोग में PHP कार्यों के एक भूलभुलैया के साथ चयन उत्पन्न होता है, तो यह एक त्वरित तय है, जबकि मैं उन लोगों के आसपास अपना नाम प्राप्त करता हूं :)


जवाबों:


270

हालांकि मैं इस बारे में निश्चित नहीं हूं कि आप क्या हासिल करना चाहते हैं, इस बिट कोड ने मेरे लिए काम किया।

<select id="mySelect" multiple="multiple">
  <option value="1">First</option>
  <option value="2">Second</option>
  <option value="3">Third</option>
  <option value="4">Fourth</option>
</select>

<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length) {
    $("#mySelect option[value='3']").attr('selected', 'selected');
  }
});
</script>

86
चयन को इस तरह पढ़ना आसान होगा:$("#mySelect").val(3);
जोर्न शॉ-रोड

6
यह मुझे सही रास्ते पर मिला, लेकिन मुझे ऐसा करने की आवश्यकता थी: यह $("#mySelect option")[2]['selected'] = true; पता लगाया कि फायरबग में ऑब्जेक्ट संरचनाओं की जांच के बाद बाहर।
सेम्परोस

28
JQuery 1.6 के रूप में आप सीधे संपत्ति सेट कर सकते हैं। $("#mySelect").prop("selectedIndex", 2)
ग्रेडबोट

1
इंटरनेट एक्सप्लोरर 8 में .val (x) संस्करण काम नहीं करता है, इसलिए @gradbot के पास यह अधिकार है, क्योंकि यह सभी ब्राउज़र में काम करता है।
सोरसी

30

इसके लिए jQuery का उपयोग करने की आवश्यकता नहीं है:

var foo = document.getElementById('yourSelect');
if (foo)
{
   if (foo.selectedIndex != null)
   {
       foo.selectedIndex = 0;
   } 
}

58
ओपी ने कहा, "jQuery का उपयोग कर ..." तो यह अनदेखी करने के लिए बहुत अच्छा लगता है, नहीं?
ब्रायन एचएच

13
व्यक्तिगत रूप से, यदि मैं एक विशिष्ट प्रश्न पूछता हूं, तो मैं एक अलग तरीके के बजाय प्रश्न का उत्तर प्राप्त करना चाहूंगा।
विट्टो

18
कभी-कभी आपके द्वारा चाहा गया उत्तर वह नहीं होता है जिसकी आप अपेक्षा करते हैं।
MrBoJangles

5
बावजूद, उन्होंने jQuery के लिए कहा, और jQuery का उत्तर समझना थोड़ा आसान है, खासकर अगर कोई आधार जावास्क्रिप्ट नहीं समझता है।
shmeeps

6
इसे करने का उत्कृष्ट तरीका, कभी-कभी बेस जावास्क्रिप्ट काफी आसान हो सकता है!
हॉलघन

13

यह सवाल पुराना है और इसमें बहुत सारे विचार हैं, इसलिए मैं बस कुछ सामान वहां फेंक दूंगा जो कुछ लोगों को मेरी मदद करेगा, मुझे यकीन है।

यह जाँचने के लिए कि किसी चयनित तत्व में कोई चयनित वस्तु है:

if ($('#mySelect option:selected').length > 0) { alert('has a selected item'); }

या यह जांचने के लिए कि किसी चयन में कुछ चयनित नहीं है:

if ($('#mySelect option:selected').length == 0) { alert('nothing selected'); }

या यदि आप किसी प्रकार के पाश में हैं और जाँचना चाहते हैं कि क्या वर्तमान तत्व चुना गया है:

$('#mySelect option').each(function() {
    if ($(this).is(':selected')) { .. }
});

यह देखने के लिए कि क्या कोई तत्व लूप में रहते हुए चयनित नहीं है:

$('#mySelect option').each(function() {
    if ($(this).not(':selected')) { .. }
});

ऐसा करने के ये कुछ तरीके हैं। jQuery के एक ही काम को पूरा करने के कई अलग-अलग तरीके हैं, इसलिए आप आमतौर पर सिर्फ एक को चुनते हैं जो सबसे कुशल प्रतीत होता है।


"नहीं" ने मेरे लिए $ ('# mySelect विकल्प') काम नहीं किया है। प्रत्येक (फ़ंक्शन () {if ($ (यह) .not (': चयनित')) {..}}; इसलिए एक निषेध का उपयोग किया जाता है जैसे कि (! $! (यह) .is (': चयनित')) {..} ब्राउज़र: क्रोम; जेकरी संस्करण: ३.१.१
अनिल कुमार

12

lencioni का उत्तर वही है जो मैं सुझाऊँगा। आप विकल्प ('#mySelect option:last')का चयन करने के लिए " #mySelect option[value='yourDefaultValue']" का उपयोग करके विशिष्ट मान के साथ चयनकर्ता को बदल सकते हैं । चयनकर्ताओं पर अधिक

यदि आप क्लाइंट पर चुनिंदा सूचियों के साथ बड़े पैमाने पर काम कर रहे हैं तो इस प्लगइन की जाँच करें: http://www.texotela.co.uk/code/jquery/select/ । यदि आप चुनिंदा सूचियों के साथ काम करने के कुछ और उदाहरण देखना चाहते हैं, तो एक नज़र डालें।


9

यहां मेरा विकल्प चयनित विकल्प को बदल रहा है। यह jQuery 1.3.2 के लिए काम करता है

function selectOption(select_id, option_val) {
    $('#'+select_id+' option:selected').removeAttr('selected');
    $('#'+select_id+' option[value='+option_val+']').attr('selected','selected');   
}




2

को देखो SelectedIndex के selectतत्व। BTW, कि एक सादे राजभाषा 'डोम बात है, JQuery के विशिष्ट नहीं है।


2

यह एक त्वरित स्क्रिप्ट थी जो मैंने पाया कि काम किया है ... .Result एक लेबल को सौंपा गया है।

$(".Result").html($("option:selected").text());

1

आप लोग चयन के लिए बहुत अधिक रास्ता बना रहे हैं। बस मान से चयन करें:

$("#mySelect").val( 3 );

2
यह विकल्प 3 का चयन कर रहा है, भले ही दूसरा विकल्प पहले से ही चुना गया हो।
जॉर्डन रयान मूर


1

मुझे जांचने का एक अच्छा तरीका मिला, यदि विकल्प चुना गया है और यह नहीं होने पर डिफ़ॉल्ट का चयन करें।

    if(!$('#some_select option[selected="selected"]').val()) {
        //here code if it HAS NOT selected value
        //for exaple adding the first value as "placeholder"
        $('#some_select option:first-child').before('<option disabled selected>Wybierz:</option>');
    }

यदि #some_select has't डिफ़ॉल्ट चयनित विकल्प तो .val () है अपरिभाषित



0
$("#select_box_id").children()[1].selected

यह एक विकल्प की जाँच का एक और तरीका है जो चयनित है या नहीं jquery में। यह बूलियन (सच्चा या गलत) लौटाएगा।

[१] चुनिंदा बॉक्स विकल्प का सूचकांक है


0

आग के लिए चुनिंदा बॉक्स पर ईवेंट बदलें और एक बार ऐसा करने के बाद बस चयनित विकल्प की आईडी विशेषता को खींचें: -

$("#type").change(function(){
  var id = $(this).find("option:selected").attr("id");

  switch (id){
    case "trade_buy_max":
      // do something here
      break;
  }
});

0

मैं बस कुछ इसी तरह की तलाश में था और यह पाया:

$('.mySelect:not(:has(option[selected])) option[value="2"]').attr('selected', true);

यह वर्ग के सभी चुनिंदा मेनू ढूँढता है जिनके पास पहले से कोई विकल्प नहीं है, और डिफ़ॉल्ट विकल्प (इस मामले में "2") का चयन करता है।

मैंने :selectedइसके बजाय का उपयोग करने की कोशिश की [selected], लेकिन यह काम नहीं किया क्योंकि कुछ हमेशा चुना जाता है, भले ही कुछ भी विशेषता न हो


0

यदि आपको यह देखने के लिए प्रत्येक विकल्प को स्पष्ट रूप से देखने की आवश्यकता है कि क्या आपके पास "चयनित" विशेषता है तो आप ऐसा कर सकते हैं। अन्यथा option:selectedआप पहले डिफ़ॉल्ट विकल्प के लिए मान प्राप्त करेंगे।

var viewport_selected = false;      
$('#viewport option').each(function() {
    if ($(this).attr("selected") == "selected") {
        viewport_selected = true;
    }
});
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.