javascript - रेडियो बटन को अनचेक कैसे करें?




jquery radio-button (11)

मेरे पास रेडियो बटन का समूह है जिसे मैं jQuery का उपयोग करके AJAX फ़ॉर्म सबमिट करने के बाद अनचेक करना चाहता हूं। मेरे पास निम्न कार्य है:

function clearForm(){
  $('#frm input[type="text"]').each(function(){
      $(this).val("");  
  });
  $('#frm input[type="radio":checked]').each(function(){
      $(this).checked = false;  
  });
 }

इस फ़ंक्शन की सहायता से, मैं टेक्स्ट बॉक्स पर मान साफ़ कर सकता हूं, लेकिन मैं रेडियो बटन के मानों को साफ़ नहीं कर सकता।

वैसे, मैंने $(this).val(""); भी कोशिश की $(this).val(""); लेकिन यह काम नहीं किया।


JQuery के लिए बस निम्नलिखित कोड डालें:

jQuery("input:radio").removeAttr("checked");

और जावास्क्रिप्ट के लिए:

$("input:radio").removeAttr("checked");

किसी भी foreach पाश, .each () fubction या किसी भी चीज रखने की जरूरत नहीं है


आप केवल चेकबॉक्स का उपयोग करके रेडियोधटन व्यवहार का अनुकरण कर सकते हैं:

<input type="checkbox" class="fakeRadio" checked />
<input type="checkbox" class="fakeRadio" />
<input type="checkbox" class="fakeRadio" />

फिर, आप इस सरल कोड का उपयोग अपने लिए काम करने के लिए कर सकते हैं:

$(".fakeRadio").click(function(){
    $(".fakeRadio").prop( "checked", false );
    $(this).prop( "checked", true );
});

यह ठीक काम करता है और आपके पास प्रत्येक बटन के व्यवहार पर अधिक नियंत्रण होता है।

आप इसे अपने आप से आजमा सकते हैं: http://jsfiddle.net/almircampos/n1zvrs0c/

यह कांटा आपको टिप्पणी में अनुरोध के अनुसार सभी को अचयनित करने देता है: http://jsfiddle.net/5ry8n4f4/


इगोर के कोड के आधार पर लॉरीनस प्लगइन का थोड़ा संशोधन। यह लक्षित रेडियो बटन से जुड़े संभावित लेबल को समायोजित करता है:

(function ($) {
    $.fn.uncheckableRadio = function () {

        return this.each(function () {
            var radio = this;
                $('label[for="' + radio.id + '"]').add(radio).mousedown(function () {
                    $(radio).data('wasChecked', radio.checked);
                });

                $('label[for="' + radio.id + '"]').add(radio).click(function () {
                    if ($(radio).data('wasChecked'))
                        radio.checked = false;
                });
           });
    };
})(jQuery);

इसे आज़माएं, यह चाल करेगा:

        $(document).ready(function() {
           $("input[type='radio']").mousedown(function(e) {
                if ($(this).attr("checked") == true) {
                   setTimeout("$('input[id=" + $(this).attr('id') + "]').removeAttr('checked');", 200);}
                else {
                    return true
                }
            });
        });

धन्यवाद पैट्रिक, तुमने मेरा दिन बनाया! यह मूसडाउन है जिसका उपयोग आप करना है। हालांकि मैंने कोड में सुधार किया है ताकि आप रेडियो बटन के समूह को संभाल सकें।

//We need to bind click handler as well
//as FF sets button checked after mousedown, but before click
$('input:radio').bind('click mousedown', (function() {
    //Capture radio button status within its handler scope,
    //so we do not use any global vars and every radio button keeps its own status.
    //This required to uncheck them later.
    //We need to store status separately as browser updates checked status before click handler called,
    //so radio button will always be checked.
    var isChecked;

    return function(event) {
        //console.log(event.type + ": " + this.checked);

        if(event.type == 'click') {
            //console.log(isChecked);

            if(isChecked) {
                //Uncheck and update status
                isChecked = this.checked = false;
            } else {
                //Update status
                //Browser will check the button by itself
                isChecked = true;

                //Do something else if radio button selected
                /*
                if(this.value == 'somevalue') {
                    doSomething();
                } else {
                    doSomethingElse();
                }
                */
            }
    } else {
        //Get the right status before browser sets it
        //We need to use onmousedown event here, as it is the only cross-browser compatible event for radio buttons
        isChecked = this.checked;
    }
}})());

प्रयत्न

$(this).attr("checked" , false );

प्लगइन के रूप में इगोर के कोड की पुनरावृत्ति।

उपयोग:

$('input[type=radio]').uncheckableRadio();

लगाना:

(function( $ ){

    $.fn.uncheckableRadio = function() {

        return this.each(function() {
            $(this).mousedown(function() {
                $(this).data('wasChecked', this.checked);
            });

            $(this).click(function() {
                if ($(this).data('wasChecked'))
                    this.checked = false;
            });
        });

    };

})( jQuery );

या तो (सादा जेएस)

this.checked = false;

या (jQuery)

$(this).prop('checked', false);
// Note that the pre-jQuery 1.6 idiom was
// $(this).attr('checked', false);

Attr () और prop () के बीच अंतर पर स्पष्टीकरण के लिए jQuery प्रोप () सहायता पृष्ठ देखें और क्यों प्रोप () अब बेहतर है।
प्रोप () मई 2011 में jQuery 1.6 के साथ पेश किया गया था।


$('#frm input[type="radio":checked]').each(function(){
   $(this).checked = false;  
  });

यह लगभग अच्छा है लेकिन आप [0]

सही - >> $(this)[0].checked = false;


$('input[id^="rad"]').dblclick(function(){
    var nombre = $(this).attr('id');
    var checked =  $(this).is(":checked") ;
    if(checked){
        $("input[id="+nombre+"]:radio").prop( "checked", false );
    }
});

प्रत्येक बार जब आप चेक किए गए रेडियो में डबल क्लिक करते हैं तो चेक में गलत परिवर्तन होते हैं

मेरे रेडियो id=radxxxxxxxx साथ शुरू id=radxxxxxxxx क्योंकि मैं इस आईडी चयनकर्ता का उपयोग करता हूं।


function setRadio(obj) 
{
    if($("input[name='r_"+obj.value+"']").val() == 0 ){
      obj.checked = true
     $("input[name='r_"+obj.value+"']").val(1);
    }else{
      obj.checked = false;
      $("input[name='r_"+obj.value+"']").val(0);
    }

}

<input type="radio" id="planoT" name="planoT[{ID_PLANO}]" value="{ID_PLANO}" onclick="setRadio(this)" > <input type="hidden" id="r_{ID_PLANO}" name="r_{ID_PLANO}" value="0" >

: डी





dynamic-forms