2011-12-16 16 views
11

जानकारी: jQuery 1.6.0 एचटीएमएल चेकबॉक्स:jQuery चेकबॉक्स हमेशा रिटर्न 'अनिर्धारित'

if(jQuery) { 
    alert("loaded"); 
} 

और यह है:

सबसे पहले मुझे यकीन है कि jQuery साथ भरी हुई है बनाया है मामला, यह भरा हुआ है। तो तुरंत उसके बाद लाइन मैं का उपयोग करें:

var returnvalue = jQuery("#mycheckbox").attr("checked"); 
alert(returnvalue); 

यह किसी कारण से, हमेशा अलर्ट 'अपरिभाषित'। मुझे 100% यकीन है कि आईडी मौजूद है। मैंने निम्न विधि भी कोशिश की है:

jQuery("#mycheckbox").find('input[type="checkbox"]').each(function(){ 
    alert("foo"); 
    if (jQuery(this).is(":checked")) 
     ReturnVal = true; 
}); 

लेकिन यह चेतावनी भी पॉप अप नहीं करता है।

मैं क्या गलत कर रहा हूं? मैं अब तक एक jQuery या जावास्क्रिप्ट विशेषज्ञ हूँ, लेकिन यह काम करना चाहिए ... सही?

संपादित करें: मैं कोशिश की है:

jQuery(document).ready(function() { 
    alert(id); 
    var returnvalue = jQuery("#" . id).prop("checked"); 
    alert(returnvalue); 
}); 

चेतावनी (आईडी) मुझे उचित आईडी देता है, पर वे सूचना (returnvalue) अनिर्धारित दिखाता है।

मैं भी कोशिश की है:

if(jQuery) { 
    alert("loaded"); 
} 
jQuery(function() { 
    alert(id); 
    var returnvalue = jQuery("#" . id).attr("checked"); 
    alert(returnvalue); 
}); 

एक ही परिणाम

EDIT2: .prop का उपयोग कर और के साथ एक '+' एक के बजाय आईडी जोड़कर बाद '।' (PHP आदत), यह काम करता है। आपकी मदद के लिए आप सभी को शुक्रिया!

+1

'jQuery (" # "आईडी) 'बस गलत है। आप '#" स्ट्रिंग की 'id' प्रॉपर्टी के लिए पूछ रहे हैं। – RightSaidFred

+0

अरे, तुम सही हो! जावास्क्रिप्ट के साथ यह मेरा पहला समय काम कर रहा है, मैंने हमेशा PHP के साथ काम किया है, इसलिए मुझे '।' में उपयोग किया जाता है। आप पूरी तरह से सही हैं, यह मेरी समस्या भी तय करता है, आपको बहुत धन्यवाद! – pbond

उत्तर

13
  • आप या jQuery 1.6 का उपयोग कर बाद में कर रहे हैं, prop()attr() के बजाय का उपयोग करें:

var returnvalue = jQuery("#mycheckbox").prop("checked"); 

इसका कारण यह है कि आप एक स्पष्ट checked साथ विशेषता को शामिल नहीं किया है, तो तत्व, तो विशेषता undefined है हालांकि संपत्ति का डिफ़ॉल्ट होगा। प्रश्न में अपने HTML सहित मददगार होगा

jQuery("#mycheckbox").each(function(){ 
    alert("foo"); 
    if (jQuery(this).is(":checked")) 
     ReturnVal = true; 
}); 

:


  • आप .find() को खत्म करने की जरूरत है।

4

इस प्रयास करें:

if(jQuery) { 
    alert("loaded"); 
} 
$(function() { 
    var returnvalue = $("#mycheckbox").attr("checked"); 
    alert(returnvalue); 
}); 

अद्यतन अपनी स्क्रिप्ट पेज के शीर्ष पर है

हैं, तो यह पहले एचटीएमएल भरी हुई है निष्पादित करता है। उस समय के दौरान, attr ('चेक') अपरिभाषित है।

एक स्व-निष्पादन अज्ञात फ़ंक्शन $ (फ़ंक्शन() {...}) में कोड लपेटकर, आपका कोड HTML लोड के बाद निष्पादित होता है। टिप्पणी करने के लिए

उत्तर

आपका कोड:

function isChecked(id) 
{ 
    if(jQuery) { alert("loaded"); } 
    $(function() { 
     alert(id); 
     var returnvalue = $("#" + id).attr("checked"); 
     alert(returnvalue); 
    }); 
} 

इस प्रयास करें। यह क्या चेतावनी देता है?

function isChecked(id) 
{ 
    if(jQuery) { alert("loaded"); } 
    alert(id); 
    alert('there are this many elements with matching id: ' + $("#" . id).length); 
    var returnvalue = $("#" + id).attr("checked"); 
    alert(returnvalue); 
} 

क्या तीसरी चेतावनी कहती है "मिलान आईडी के साथ ये कई तत्व हैं: 0"?

+0

अब मेरे पास निम्न कोड है: 'फ़ंक्शन चेक किया गया है (आईडी) { यदि (jQuery) { अलर्ट ("लोड"); } $ (function() { चेतावनी (आईडी); वर returnvalue = $ ("#" आईडी) .attr ("जाँच");। चेतावनी (returnvalue); }); ' जो अभी भी अपरिभाषित रिटर्न अलर्ट (आईडी) उचित आईडी अलर्ट करता है। इसके अलावा, जब मैं सबमिट करता हूं (पृष्ठ पहले से ही लोड हो जाता है), यह अभी भी अपरिभाषित है। – pbond

+0

कृपया अपने मूल प्रश्न में कोड अपडेट पोस्ट करें, उन्हें टिप्पणियों में पढ़ना मुश्किल है। – danludwig

+0

हाय, यह अलर्ट 'मिलान आईडी के साथ कई तत्व हैं: 0'। – pbond

2

.prop$('#checkbox1').prop('checked'), jQuery 1 का उपयोग करें।6 +

बूलियन गुण के संबंध में, एक डोम तत्व HTML मार्कअप <input type="checkbox" checked="checked" /> द्वारा परिभाषित करने पर विचार, और यह ELEM नामित JavaScript वैरिएबल में है मान:

elem.checked true (Boolean) Will change with checkbox state 
$(elem).prop("checked") true (Boolean) Will change with checkbox state 
elem.getAttribute("checked") "checked" (String) Initial state of the checkbox; does not change 
$(elem).attr("checked")(1.6) "checked" (String) Initial state of the checkbox; does not change 
$(elem).attr("checked")(1.6.1+) "checked" (String) Will change with checkbox state 
$(elem).attr("checked")(pre-1.6) true (Boolean) Changed with checkbox state 

W3C रूपों विनिर्देश के अनुसार, जाँच की विशेषता है एक बुलियन विशेषता, जिसका अर्थ है कि संबंधित गुण सत्य है यदि विशेषता बिल्कुल मौजूद है-भले ही, विशेषता के पास कोई मान या खाली स्ट्रिंग मान न हो। वरीय क्रॉस-ब्राउज़र-संगत निर्धारित करने के लिए एक चेकबॉक्स चेक किया गया है जिस तरह से निम्न में से एक का उपयोग कर तत्व की संपत्ति पर एक "truthy" मूल्य के लिए जाँच करने के लिए है:

if (elem.checked) 
if ($(elem).prop("checked")) 
if ($(elem).is(":checked")) 

तो jQuery 1.6, कोड का उपयोग कर if ($(elem).attr("checked")) होगा वास्तविक सामग्री विशेषता पुनर्प्राप्त करें, जो चेकबॉक्स की जांच नहीं की जाती है और अनचेक की जाती है। इसका मतलब केवल चेक किए गए संपत्ति के डिफ़ॉल्ट या प्रारंभिक मूल्य को स्टोर करना है। पिछली संगतता को बनाए रखने के लिए, jQuery 1.6.1+ में .attr() विधि आपके लिए प्रॉपर्टी को पुनर्प्राप्त और अपडेट कर देगी, इसलिए बूलियन विशेषताओं के लिए कोई कोड .prop() में बदला जाना आवश्यक नहीं है। फिर भी, चेक किए गए मान को पुनर्प्राप्त करने का पसंदीदा तरीका ऊपर सूचीबद्ध विकल्पों में से एक है। यह देखने के लिए कि यह नवीनतम jQuery में कैसे काम करता है, नीचे दिए गए उदाहरण में चेकबॉक्स को चेक/अनचेक करें।

संबंधित मुद्दे