2010-03-02 23 views
7

मैं 4 चेक बॉक्स है और मैं (जाँच या अनियंत्रित) उन्हें चालू करने के लिए चाहते हैं और वे सभी एक ही कभी बताएं कि वे में हैं मैं अब तक इस राशि होना चाहिए:।टॉगल चेकबॉक्स

var toggle_click = false; 

function check_them(element){ 

    if(toggle_click){ 
     $('#'+element+'_1').attr('checked', true); 
     $('#'+element+'_2').attr('checked', true); 
     $('#'+element+'_3').attr('checked', true); 
     $('#'+element+'_4').attr('checked', true); 
    } 

    if(!toggle_click){ 
     $('#'+element+'_1').attr('checked', false); 
     $('#'+element+'_2').attr('checked', false); 
     $('#'+element+'_3').attr('checked', false); 
     $('#'+element+'_4').attr('checked', false); 
    } 

    if(!toggle_click){ toggle_click = true; } 
    if(toggle_click) { toggle_click = false; } 
} 

पृष्ठ लोड पर कुछ चेकबॉक्स को चुना जा सकता है या नहीं देखा जा सकता है - लेकिन एक बार जब मैं एक लिंक पर क्लिक करता हूं और इस फ़ंक्शन को चलाता हूं, तो मैं चाहता हूं कि ये चेकबॉक्स सभी एक ही स्थिति में जाएं।

जब मैं उपर्युक्त कोशिश करता हूं, तो यह बॉक्स को टिक नहीं लग रहा है और कभी-कभी यह उन्हें सभी को टिक्स करता है और इस फ़ंक्शन को फिर से चलाता है। क्या हो रहा है? मैं कॉफी वंचित और उलझन में हूँ!

चेकबॉक्स समूह या कुछ का उपयोग करना चाहिए?

सब किसी भी मदद

+0

अंतिम दो पंक्तियों पर, अगर _toggle_click_ _false_ है, तो इसे _true_ पर सेट करें, फिर यदि यह _true_ है, तो इसे _false_ पर सेट करें। कोई फर्क नहीं पड़ता कि इसका प्रारंभिक मूल्य क्या है, यह हमेशा अंत में _false_ होगा। मैं उन्हें 'toggle_click =' से बदल दूंगा!toggle_click; '... और पूरी चीज़ के लिए एक लूप का उपयोग करें जहां _toggle_click_ का मान 'चेक' के बाद चला जाता है। – LGT

उत्तर

7

..... ...

var isChecked = false; 

function check_them(element){ 

    if(isChecked === false) { 
     $('#'+element+'_1').attr('checked', true); 
     $('#'+element+'_2').attr('checked', true); 
     $('#'+element+'_3').attr('checked', true); 
     $('#'+element+'_4').attr('checked', true); 
     isChecked = true; 
    } 
    else 
    { 
     $('#'+element+'_1').attr('checked', false); 
     $('#'+element+'_2').attr('checked', false); 
     $('#'+element+'_3').attr('checked', false); 
     $('#'+element+'_4').attr('checked', false); 
     isChecked = false; 
    } 
} 
+0

ओह प्रिय - मेरे साथ क्या हुआ। अगर और खूनी और इस्तेमाल किया जाना चाहिए! धन्यवाद सरफ्राज़! – Abs

+0

@ एबीएस: आपका स्वागत है ........... :) – Sarfraz

+0

यह अनावश्यक रूप से वर्बोज़ –

0

के बजाय विशेषता सेटिंग के लिए धन्यवाद गलत पर जाँच की, बस इसे पूरी तरह निकाल दें! :)

$ ('#' + तत्व + '_ 1')। RemoveAttr ('चेक');

var state = $("#element1").attr("checked") === "checked" ? true : false; 
$("#test").click(function(){  
    $("input[id^=element]").each(function(){ 
     if(state === false){ 
      $(this).attr("checked", "checked"); 
     }else{ 
      $(this).removeAttr("checked"); 
     } 
    }); 
    state = !state;   
}); 
+0

'$ (" # element1 ")। Attr (" चेक किया गया ") ===" चेक किया गया "' आपके लिए पर्याप्त बुलियन नहीं है? ' सच: झूठी 'पूरी तरह से गिराया जा सकता है। –

+2

यदि आप शेष कोड पढ़ते हैं तो आप देखेंगे कि चूंकि संपत्ति हटा दी गई है, इसलिए विशेषता या तो सत्य या निहित है। बोगस -1 के लिए धन्यवाद। –

6

चेक किए गए एक "हास्यास्पद" विशेषता है:

यहाँ एक उदाहरण है। एक बात जो मैं सुझाऊंगा वह attr('checked', false) की बजाय है, इसके बजाय removeAttr('checked') आज़माएं।

असल में, डीओएम में, प्रस्तुत तत्व एक विशेषता के रूप में चेक किया जाएगा, या यदि यह एक्सएचटीएमएल अनुपालन, checked=checked है। तो, इसे गलत पर सेट करना सही काम नहीं है।

जहां तक ​​अन्य मुद्दे हैं, मैं अभी तक एक jQuery समर्थक के बारे में जानने के लिए पर्याप्त नहीं हूं।

+1

यह वास्तव में मजाकिया है। –

0

सुनिश्चित करें कि आप check_them कॉल नहीं करते से पहले डोम

$(function() { 
    check_them("whatever"); 
}); 

इसके अलावा लोड होना पूरा हो बनाओ, तो आपको निम्न को यह पूरी बात को आसान बनाने में कर सकते हैं:

var check_them = (function() { 
    var is_checked = false; // Now this is not global, huzzah 
    return function(element) { 
     // You can update all of the elements at once 
     $('#'+element+'_1, #'+element+'_2, #'+element+'_3, #'+element+'_4').attr('checked', !is_checked); 
     is_checked = !is_checked; 
    }; 
})(); 
1

अच्छी तरह से, विभिन्न दृष्टिकोण के लिए: चेकबॉक्स को जो कुछ भी नहीं था, उसे सेट करता है:

var toggle_click = false; 
function setCheck(mythis) 
{ 
    $('#'+element+'_1').checked = !mythis.checked; 
    $('#'+element+'_2').checked = !mythis.checked; 
    $('#'+element+'_3').checked = !mythis.checked; 
    $('#'+element+'_4').checked = !mythis.checked; 
    toggle_click = !toggle_click; 
}; 
$(function() { 
    $('#'+element+'_1').click(function() { 
    setCheck(this); 
    }); 
    $('#'+element+'_2').click(function() { 
    setCheck(this); 
    }); 
    $('#'+element+'_3').click(function() { 
    setCheck(this); 
    }); 
    $('#'+element+'_4').click(function() { 
     setCheck(this); 
    }); 
}); 

नोट आप उन्हें एक वर्ग "mycheckbox" कहा जाता देते हैं और भी आसान:

var toggle_click = false; 
$(function() { 
    $('.mycheckbox').click(function() { 
    $('.mycheckbox').each().checked = !this.checked; 
    toggle_click = !toggle_click; 
    }); 
}); 
4
$('tr').click(function(){ 
     var chkbox = document.getElementById("chk"+this.id); 
     chkbox.checked = !chkbox.checked; 

    }); 
+2

क्या आप अपने उत्तर पर विस्तृत कर सकते हैं? यह अच्छा लग रहा है, लेकिन मुझे नहीं लगता कि आप 'tr' का उपयोग क्यों करते हैं – ixe013

1

यह भी मुसीबतों के बिना केवल जावास्क्रिप्ट का उपयोग किया जा सकता है, तो आप एक छवि या कुछ भी उपयोग कर सकते हैं कि आपको इसे भी क्लिक करने देता है।

<html> 
    <body> 
    <a href=" javascript:check();"> Toggle </a> <br> 
    <input type="checkbox" id="c1" > Un/Check me <br> 
    <input type="checkbox" id="c2" > Un/Check me 
    </body> 
</html> 

<script> 
function check() 
{ 
    c1.checked = !c1.checked; 
    c2.checked = !c2.checked; 
} 
</script> 

मुझे उम्मीद है कि इससे मदद मिलती है।

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