Jquery यदि रेडियो बटन की जाँच की जाती है


150

संभव डुप्लिकेट:
विशिष्ट रेडियो बटन की जांच की जाती है

मेरे पास फिलहाल ये 2 रेडियो बटन हैं ताकि उपयोगकर्ता यह तय कर सके कि उन्हें कीमत में शामिल डाक की जरूरत है या नहीं:

<input type="radio" id="postageyes" name="postage" value="Yes" /> Yes
<input type="radio" id="postageno" name="postage" value="No" /> No

मुझे यह जाँचने के लिए Jquery का उपयोग करने की आवश्यकता है कि क्या 'हां' रेडियो बटन की जाँच की गई है, और यदि यह है, तो एक एपेंड फ़ंक्शन करें। कोई मुझे बता सकता है कि मैं यह कैसे करूं?

किसी भी मदद के लिए धन्यवाद

संपादित करें:

मैंने इस पर अपना कोड अपडेट कर दिया है, लेकिन यह काम नहीं कर रहा है। क्या मुझसे कुछ गलत हो रही है?

<script type='text/javascript'>
// <![CDATA[
jQuery(document).ready(function(){

$('input:radio[name="postage"]').change(function(){
    if($(this).val() == 'Yes'){
       alert("test");
    }
});

});

// ]]>
</script>

1
@ डैनियल एच: आपके अपडेट पर: यह ठीक काम कर रहा है !
Shef

यह अजीब है, यह सिर्फ मेरी वेबसाइट पर काम नहीं कर रहा है। कम से कम मुझे पता है कि कोड सही है, मैं इसे खोजने की कोशिश करूंगा कि इसमें क्या गलत है, सभी उत्तर के लिए धन्यवाद!
डैनियल एच।

जवाबों:


285
$('input:radio[name="postage"]').change(
    function(){
        if ($(this).is(':checked') && $(this).val() == 'Yes') {
            // append goes here
        }
    });

या, ऊपर - फिर से - थोड़ा कम अति सुंदर jQuery का उपयोग कर :

$('input:radio[name="postage"]').change(
    function(){
        if (this.checked && this.value == 'Yes') {
            // note that, as per comments, the 'changed'
            // <input> will *always* be checked, as the change
            // event only fires on checking an <input>, not
            // on un-checking it.
            // append goes here
        }
    });

संशोधित (सुधार-कुछ) jQuery:

// defines a div element with the text "You're appendin'!"
// assigns that div to the variable 'appended'
var appended = $('<div />').text("You're appendin'!");

// assigns the 'id' of "appended" to the 'appended' element
appended.id = 'appended';

// 1. selects '<input type="radio" />' elements with the 'name' attribute of 'postage'
// 2. assigns the onChange/onchange event handler
$('input:radio[name="postage"]').change(
    function(){

        // checks that the clicked radio button is the one of value 'Yes'
        // the value of the element is the one that's checked (as noted by @shef in comments)
        if ($(this).val() == 'Yes') {

            // appends the 'appended' element to the 'body' tag
            $(appended).appendTo('body');
        }
        else {

            // if it's the 'No' button removes the 'appended' element.
            $(appended).remove();
        }
    });

जेएस फिडेल डेमो

और, आगे, एक हल्का अपडेट (चूंकि मैं स्निपेट्स और साथ ही जेएस फिडल लिंक को शामिल करने के लिए संपादन कर रहा था), एस के <input />साथ तत्वों को लपेटने के <label>लिए <input />- प्रासंगिक को अपडेट करने के लिए पाठ पर क्लिक करने की अनुमति देता हूं - और बनाने के साधनों को बदलना संलग्न करने के लिए सामग्री:

var appended = $('<div />', {
  'id': 'appended',
  'text': 'Appended content'
});
$('input:radio[name="postage"]').change(function() {
  if ($(this).val() == 'Yes') {
    $(appended).appendTo('body');
  } else {
    $(appended).remove();
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>
  <input type="radio" id="postageyes" name="postage" value="Yes" />Yes</label>
<label>
  <input type="radio" id="postageno" name="postage" value="No" />No</label>

जेएस फिडेल डेमो

इसके अलावा, अगर आपको केवल उपयोगकर्ता द्वारा जाँच की गई सामग्री के आधार पर सामग्री दिखाने की आवश्यकता है, तो एक मामूली अपडेट जो स्पष्ट शो / छिपाने का उपयोग करके दृश्यता को टॉगल करेगा:

// caching a reference to the dependant/conditional content:
var conditionalContent = $('#conditional'),
    // caching a reference to the group of inputs, since we're using that
    // same group twice:
    group = $('input[type=radio][name=postage]');

// binding the change event-handler:
group.change(function() {
  // toggling the visibility of the conditionalContent, which will
  // be shown if the assessment returns true and hidden otherwise:
  conditionalContent.toggle(group.filter(':checked').val() === 'Yes');
  // triggering the change event on the group, to appropriately show/hide
  // the conditionalContent on page-load/DOM-ready:
}).change();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>
  <input type="radio" id="postageyes" name="postage" value="Yes" />Yes</label>
<label>
  <input type="radio" id="postageno" name="postage" value="No" />No</label>
<div id="conditional">
  <p>This should only show when the 'Yes' radio &lt;input&gt; element is checked.</p>
</div>

और, अंत में, बस CSS का उपयोग कर:

/* setting the default of the conditionally-displayed content
to hidden: */
#conditional {
  display: none;
}

/* if the #postageyes element is checked then the general sibling of
that element, with the id of 'conditional', will be shown: */
#postageyes:checked ~ #conditional {
  display: block;
}
<!-- note that the <input> elements are now not wrapped in the <label> elements,
in order that the #conditional element is a (subsequent) sibling of the radio
<input> elements: -->
<input type="radio" id="postageyes" name="postage" value="Yes" />
<label for="postageyes">Yes</label>
<input type="radio" id="postageno" name="postage" value="No" />
<label for="postageno">No</label>
<div id="conditional">
  <p>This should only show when the 'Yes' radio &lt;input&gt; element is checked.</p>
</div>

जेएस फिडेल डेमो

संदर्भ:


3
यह देखने की जरूरत नहीं है कि यह जांच की गई है या नहीं। इसका अन्यथा कभी मूल्य नहीं होगा। संसाधनों की बर्बादी!
शेफ

22

इसे इस्तेमाल करे

if($("input:radio[name=postage]").is(":checked")){
  //Code to append goes here
}

12

कुछ इस तरह:

if($('#postageyes').is(':checked')) {
// do stuff
}

3
JQuery ऑब्जेक्ट हमेशा सत्य है। आप $(...).lengthइसके बजाय उपयोग करना चाह सकते हैं ।
pimvdb

आपका मतलब है #postageyes:checkedया $('#postageyes').is(':checked')?
Shef

@pimvdb jQuery डॉक्स केis() अनुसार , एक बूलियन देता है। इसलिए कॉलिंग .length()टूटी हुई है। डॉक्स से: "अन्य फ़िल्टरिंग विधियों के विपरीत, .is () एक नया jQuery ऑब्जेक्ट नहीं बनाता है। इसके बजाय, यह आपको संशोधन के बिना jQuery ऑब्जेक्ट की सामग्री का परीक्षण करने की अनुमति देता है।" - api.jquery.com/is
असफ़

7
$('input:radio[name="postage"]').change(function(){
    if($(this).val() === 'Yes'){
       // append stuff
    }
});

यह रेडियो बटन पर एक परिवर्तन घटना के लिए सुनेंगे। जिस समय उपयोगकर्ता क्लिक Yesकरेगा, घटना आग जाएगी और आप डोम की तरह किसी भी चीज को जोड़ सकेंगे।



4
$("input").bind('click', function(e){
   if ($(this).val() == 'Yes') {
        $("body").append('whatever');
   }
});

इस बारे में निश्चित नहीं है लेकिन, क्या $("#postageyes:checked"हमेशा सच नहीं होगा ? क्या आपको .lengthइसके लिए काम नहीं करना पड़ेगा ?
फिल

हटा दिया "या" और उसके बाद सब कुछ
उत्पत्ति


0
jQuery('input[name="inputName"]:checked').val()

हालांकि यह कोड स्निपेट प्रश्न को हल कर सकता है, जिसमें स्पष्टीकरण सहित वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और उन लोगों को आपके कोड सुझाव के कारणों का पता नहीं चल सकता है।
पैट्रिक हुंड

समझ गया। अगला जवाब एक होगा।
बेंजामिन

0

यह परिवर्तित घटना को सुनेगा। मैंने दूसरों से जवाब लेने की कोशिश की है, लेकिन उन लोगों ने मेरे लिए काम नहीं किया और आखिरकार, यह काम किया।

$('input:radio[name="postage"]').change(function(){
    if($(this).is(":checked")){
        alert("lksdahflk");
    }
});
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.