jQuery देखें कि क्या कोई चेकबॉक्स चयनित है या नहीं


126

मुझे पता है कि कैसे देखना है कि कोई व्यक्तिगत चेकबॉक्स चुना गया है या नहीं।

लेकिन Im को निम्नलिखित में परेशानी हो रही है - एक फॉर्म आईडी दी गई है, जिसमें मुझे यह देखने की आवश्यकता है कि क्या कोई चेकबॉक्स चयनित है (अर्थात 1 या अधिक), और मुझे यह देखने की आवश्यकता है कि क्या कोई भी चयनित नहीं है। मूल रूप से मुझे दो अलग-अलग कार्यों की आवश्यकता है जो इन दो प्रश्नों का उत्तर देते हैं। मदद की सराहना की जाएगी। धन्यवाद!

वास्तव में, मुझे केवल यह बताने के लिए एक फ़ंक्शन की आवश्यकता होगी कि क्या कोई भी चयनित नहीं है। यह जानकर दूसरे सवाल का जवाब मिलेगा।


जवाबों:


246

आप कुछ इस तरह का उपयोग कर सकते हैं

if ($("#formID input:checkbox:checked").length > 0)
{
    // any one is checked
}
else
{
   // none is checked
}

8
$("#formID input:checkbox:checked").lengthयहां भी पर्याप्त होगा,
डेमन

@Damon मुझे लगता है कि आपका मतलब if ($("#formID input:checkbox:checked").length){}(बिना >0) पर्याप्त होगा क्योंकि 0 एक गलत मूल्य है, देखें james.padolsey.com/javascript/truthy-falsey
Adrien Be

11
jQuery के बारे में कहते हैं :checkboxचयनकर्ता: For better performance in modern browsers, use [type="checkbox"], देख api.jquery.com/checkbox-selector - btw radiobuttons के लिए एक ही, use [type="radio"] rather than :radio api.jquery.com/radio-selector
एड्रियन रहो

27

JQuery .is सभी निर्दिष्ट तत्वों का परीक्षण करेगा और यदि उनमें से कम से कम एक चयनकर्ता से मेल खाता है तो वह सही लौटेगा:

if ($(":checkbox[name='choices']", form).is(":checked"))
{
    // one or more checked
}
else
{
    // nothing checked
}

Althought is()काम करना प्रतीत होता है, :checkedसीधे चयनकर्ता में होने के नाते @ rahul का उत्तर अधिक उपयुक्त लगता है। है () जब "कॉलबैक के अंदर" अधिक उपयोगी लगता है, तो api.jquery.com/is देखें । या क्या मैं कुछ न कुछ भूल रहा हूं?
एड्रियन

नहीं, यह बहुत अधिक है जो डॉक्स में लिखा गया है - आप जांचते हैं कि कोई तत्व निर्दिष्ट विशेषता से मेल खा रहा है या नहीं। इसे फ़िल्टर के रूप में लागू करना और फिर जाँचना कि आपको परिणाम में कम से कम एक आइटम मिलता है, वही है लेकिन लंबे समय तक और इतना स्पष्ट नहीं है।
माइकल लोगुटोव

+1 इस तथ्य के लिए कि .is(":checked")आपके समाधान में अधिक स्पष्टता है, बाकी के बारे में निश्चित नहीं है।
एड्रियन

अर्थात् $("form input[type=checkbox]").is(":checked")एक सरल और अधिक सामान्य दृष्टिकोण हो सकता है।
एड्रिन

@ AdrienBe का उपयोग करना isबेहतर प्रदर्शन हो सकता है, क्योंकि यह एक को ढूंढते ही बंद हो जाता है।
क्रिस डब्ल्यूडब्ल्यू

8

तुम यह केर सकते हो:

  if ($('#form_id :checkbox:checked').length > 0){
    // one or more checkboxes are checked
  }
  else{
   // no checkboxes are checked
  }

कहाँ पे:

  • :checkbox फ़िल्टर चयनकर्ता सभी चेकबॉक्स का चयन करता है।
  • :checked चेकबॉक्स का चयन करेगा
  • length वहाँ की जाँच की संख्या दे देंगे

jQuery के बारे में कहते हैं :checkboxचयनकर्ता: For better performance in modern browsers, use [type="checkbox"], देख api.jquery.com/checkbox-selector
एड्रियन रहो

6

यदि चेकबॉक्स की सूची में कोई भी चेकबॉक्स बदल गया था, तो मैंने इसका उपयोग किया था:

$('input[type="checkbox"]').change(function(){ 

        var itemName = $('select option:selected').text();  

         //Do something.

});     

6

'लंबाई' का उपयोग किए बिना आप इसे इस तरह से कर सकते हैं:

if ($('input[type=checkbox]').is(":checked")) {
      //any one is checked
}
else {
//none is checked
}

3

आप यहां एक साधारण रिटर्न कर सकते हैं .length:

function areAnyChecked(formID) {
  return !!$('#'+formID+' input[type=checkbox]:checked').length;
}

यह दिए गए फॉर्म में चेकबॉक्स की तलाश करता है, देखता है कि क्या कोई हैं :checkedऔर trueयदि वे हैं तो रिटर्न (क्योंकि लंबाई 0 होगी अन्यथा)। इसे थोड़ा साफ करने के लिए, यहां गैर बूलियन परिवर्तित संस्करण है:

function howManyAreChecked(formID) {
  return $('#'+formID+' input[type=checkbox]:checked').length;
}

यह जाँच करेगा कि कितने की गिनती हुई।


3

राहुल का जवाब आपके सवाल के लिए सबसे उपयुक्त है। वैसे भी, यदि आपके पास चेकबॉक्स का एक समूह है और आपके फॉर्म के सभी चेकबॉक्स नहीं हैं, तो आप इसके लिए जा सकते हैं।

अपने द्वारा चेक किए जाने वाले सभी चेकबॉक्सों के लिए एक क्लासनाम रखें, उदाहरण के लिए कहें, एक क्लासनाम test_checkऔर अब आप चेक कर सकते हैं कि चेकबॉक्स में से कोई भी चेक ग्रुप से संबंधित है या नहीं:

$("#formID .test_check:checked").length > 0

यदि यह वापस लौटता है true, तो मान लें कि एक या अधिक चेकबॉक्स क्लासनाम होने की जाँच कर रहे हैं test_checkऔर रिटर्न की जाँच नहीं की है false

आशा है कि यह किसी की मदद करता है। धन्यवाद :)-


1

यह इस समस्या को हल करने का सबसे अच्छा तरीका है।

  if($("#checkbox").is(":checked")){

  // Do something here /////

  };

अरे, StackOverflow में आपका स्वागत है। शायद आप अपने उत्तर को थोड़ा और अधिक बता सकते हैं, क्योंकि यह स्पष्ट नहीं है कि समस्या को हल करने का "सबसे अच्छा तरीका" क्यों है।
dddJewelsbbb
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.