2009-09-28 18 views
125

मैं अगर एक इनपुट एक चेकबॉक्स है या नहीं, और निम्न काम नहीं करता है पता लगाने के लिए करना चाहते हैं:jQuery जांचें कि कोई इनपुट प्रकार चेकबॉक्स है या नहीं?

$("#myinput").attr('checked') === undefined 

आप एक बार फिर से धन्यवाद!

उत्तर

276

आप jQuery के is फ़ंक्शन की कॉल के साथ छद्म चयनकर्ता :checkbox उपयोग कर सकते हैं यह फ़ंक्शन:

function is_checkbox(selector) { 
    var $result = $(selector); 
    return $result[0] && $result[0].type === 'checkbox'; 
}; 

या इस jQuery प्लगइन:

$.fn.is_checkbox = function() { return this.is(':checkbox'); }; 
+1

यह वह तरीका है जिसका मैं हमेशा उपयोग करता हूं। –

+0

आप वास्तव में उससे भी आसान नहीं प्राप्त कर सकते हैं। – KyleFarris

+8

इसके लिए चयनकर्ता इंजन का उपयोग क्यों करें? यह पूरी तरह से अनावश्यक है। –

22
>>> a=$("#communitymode")[0] 
<input id="communitymode" type="checkbox" name="communitymode"> 
>>> a.type 
"checkbox" 

या, jQuery की शैली के अधिक:

$('#myinput').is(':checkbox') 
+0

पूरी तरह से वैध है। सबसे आसान नहीं है। – KyleFarris

+6

यह jQuery के चयनकर्ता इंजन का उपयोग करके बचाता है, जिसका उपयोग यहां पूरी तरह से अनुचित है। पहला संस्करण बहुत बेहतर है, क्योंकि jQuery की उलझन में 'attr()' फ़ंक्शन किसी भी चीज़ को गड़बड़ करने की किसी भी संभावना से बचाता है। –

+3

@ टिम डाउन सही है - आपको 'attr()' '' prop() ', afaik में बदलना चाहिए। 'attr()' हमेशा ब्राउज़र से "वास्तविक" विशेषता मान (यानी चेक किया गया या नहीं) प्राप्त नहीं करता है। ईमानदारी से यह सुनिश्चित नहीं है कि यह मामला क्यों है, लेकिन मैंने इसे थोड़ी देर पहले सीखा। – thekingoftruth

6

एक गैर jQuery समाधान ज्यादा एक jQuery समाधान की तरह है:

document.querySelector('#myinput').getAttribute('type') === 'checkbox' 
संबंधित मुद्दे