2011-03-11 17 views
27

मैं रेडियो जांचने की कोशिश कर रहा हूं। न तो निम्न काम करता है:.attr ('चेक', 'चेक') काम नहीं करता

[संपादित करें]

$('selector').attr('checked','checked'); 
$('selector').attr('checked',true); 

दो चेतावनी() निम्नलिखित कोड शो "1" में और "एक", क्रमशः। मेरी उम्मीद दूसरी चेतावनी है() "बी" दिखा रही है।

ओपेरा अपने ब्राउज़र में दूसरा रेडियो बॉक्स चेक करता है, लेकिन इसके तत्व निरीक्षक, ड्रैगनफ्लाई, दिखाता है कि डोम नहीं बदला गया है।

[अंत संपादित करें]

मैं अकसर किये गए सवाल पढ़ा था इससे पहले कि मैं इस प्रश्न पोस्ट:

http://docs.jquery.com/Frequently_Asked_Questions#How_do_I_check.2Funcheck_a_checkbox_input_or_radio_button.3F

में मदद करता है की बहुत सराहना की जाएगी!

TIA

एक्सएचटीएमएल पेज और कोड इस प्रकार है:

<!DOCTYPE html 
    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
<title>Weird Behavior</title> 
<script type="text/javascript" src="scripts/jquery.js"/> 
<script type="text/javascript"> 
function clickme(){ 
    alert($('input[name="myname"][value="b"]').length); 
    $('input[name="myname"][value="b"]').attr('checked','checked'); 
    $('#b').attr('checked',true); 
    alert($('input[name="myname"][checked]').val()); 
}; 
</script> 
</head> 
<body> 
    <form action=""> 
     <fieldset> 
      <legend>Why check is not switched?</legend> 
      <input type="radio" name="myname" value="a" id="a" checked="checked"/>A 
      <input type="radio" name="myname" value="b" id="b"/>B 
     </fieldset> 
    </form> 
    <p> 
    <button type="button" onclick="clickme()">click me</button> 
    </p> 
</body> 
</html> 
+0

तुम कैसे उत्पन्न डोम स्रोत जाँच की है? – Sander

+2

'$ ('कुछ तत्व चयनकर्ता')। Attr ('चेक', 'चेक');' –

+0

@experimentX: नमूना स्रोत कोड में यही है, है ना? – BoltClock

उत्तर

13

jQuery के साथ, कभी भी इनलाइन onclick जावास्क्रिप्ट का उपयोग न करें। इसे अविभाज्य रखें। इसके बजाए ऐसा करें, और onclick को पूरी तरह हटा दें।

इसके अलावा, अंतिम पंक्ति में :checked छद्म चयनकर्ता के उपयोग को नोट करें। इसका कारण यह है कि पृष्ठ लोड होने के बाद, HTML तत्व और फॉर्म तत्व की वास्तविक स्थिति अलग हो सकती है। एक वेब इंस्पेक्टर खोलें और आप अन्य रेडियो बटन पर क्लिक कर सकते हैं और एचटीएमएल अभी भी दिखाएगा कि पहला वाला चेक किया गया है। :checked चयनकर्ता इसके बजाय तत्वों को फ़िल्टर करता है जो वास्तव में चेक किए जाते हैं, भले ही एचटीएमएल ने क्या शुरू किया हो।

$('button').click(function() { 
    alert($('input[name="myname"][value="b"]').length); 
    $('input[name="myname"][value="b"]').attr('checked','checked'); 
    $('#b').attr('checked',true); 
    alert($('input[name="myname"]:checked').val()); 
}); 

http://jsfiddle.net/uL545/1/

+0

हां, ईवेंट श्रोता जोड़ने के लिए jQuery का उपयोग करना बेहतर है, लेकिन आपकी व्याख्या गलत है। फ़ंक्शन पाया जाता है, और आपका डेमो अभी भी 'a' echo' (इसे 'b' गूंजना चाहिए)। –

+0

अच्छा बिंदु फ़ेलिक्स, धन्यवाद। उत्तर अपडेट किया गया। –

+0

@ स्क्वीगी: छद्म चयनकर्ता 'चेक किया गया' अपना काम करता है। आपका बहुत बहुत धन्यवाद! जबकि मुझे कोड काम मिल रहा है, मैं अभी भी रेडियो चेक बॉक्स के व्यवहार को समझ नहीं पा रहा हूं। ऐसा प्रतीत होता है कि 'चेक' विशेषता दूसरों से अलग व्यवहार करती है। जैसा कि निम्न उदाहरण में दिखाया गया है, दूसरी चेतावनी() सही ढंग से 'बी' प्रदर्शित करती है, लेकिन पहली चेतावनी()' ए 'पॉप अप करती है, जो मेरी अपेक्षा से काफी दूर है। क्या आप कृपया मेरे लिए इसके बारे में अधिक जानकारी देंगे? '$ ('# बी')। Attr ('चेक', सत्य); $ ('# बी')। एडक्लास ('परीक्षण'); अलर्ट ($ ('इनपुट [नाम = "myname"] [चेक]')। वैल()); अलर्ट ($ ('[वर्ग = "परीक्षण"]')। वैल()); ' –

1

मुझे नहीं लगता कि आप

$.attr('checked',true); 

कॉल कर सकते हैं पहली जगह में कोई तत्व चयनकर्ता न होने के कारण है। $ $ ('selector_name') के बाद किया जाना चाहिए। सौभाग्य!

1

यह काम करता है, लेकिन

$('input[name="myname"][checked]').val() 

विशेषता checked साथ पहला तत्व के परिणाम प्रदान करेंगे। और a रेडियो बटन में अभी भी यह विशेषता है (और यह b बटन से पहले आता है)। b का चयन checkeda से विशेषता को हटाता है।

$('input[name="myname"]:checked').val() 

DEMO


इसके अलावा नोट:

आप jQuery के :checked उपयोग कर सकते हैं

  • का उपयोग $('b').attr('checked',true); पर्याप्त है।
  • जैसा कि अन्य लोगों ने उल्लेख किया है, इनलाइन ईवेंट हैंडलर का उपयोग न करें, ईवेंट हैंडलर जोड़ने के लिए jQuery का उपयोग करें।
1
$("input:radio").attr("checked",true); //for all radio inputs 

या

$("your id or class here").attr("checked",true); //for unique radios 

समान रूप से के लिए एक ही काम करता है ("जाँच", "जाँच")

108
$('.checkbox').attr('checked',true); 

होगा not work with from jQuery 1.6

इसके बजाय का उपयोग

$('.checkbox').prop('checked',true); 
$('.checkbox').prop('checked',false); 
+9

इस टिप के लिए आपको बहुत बहुत धन्यवाद! मैं अपने बालों को खो रहा था। – ellmo

+0

वही, बहुत बहुत धन्यवाद। मैं jquery संस्करण 10 का उपयोग कर रहा हूं। –

+0

यह एक पिटा है कि यह उत्तर स्वीकार नहीं किया गया है और स्वीकार्य व्यक्ति इतनी स्क्रीन स्पेस लेता है ... – dermatthias

9
$('.checkbox').prop('checked',true); 
$('.checkbox').prop('checked',false); 

... jquery1.9.1

3

के साथ पूरी तरह से काम करता है है क्यों नहीं की कोशिश?

$('selector').is(':checked') /* result true or false */ 

एक पूछे जाने वाले प्रश्न देखो: jQuery .is() हमें निषेध ;-)

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