JQuery में radiobuttons को रीसेट कैसे करें ताकि कोई भी जांच न हो


136

मेरे पास इस तरह से HTML में रेडियो बटन हैं:

<td>
    <input id="radio1" type="radio" name="correctAnswer" value="1">1</input>
    <input id="radio2" type="radio" name="correctAnswer" value="2">2</input>
    <input id="radio3" type="radio" name="correctAnswer" value="3">3</input>
    <input id="radio4" type="radio" name="correctAnswer" value="4">4</input>
</td>

यह एक फॉर्म टैग में है, और जब उपयोगकर्ता एक फॉर्म सबमिट करता है तो मैं सभी रेडियो बटन को डिफ़ॉल्ट रूप से वापस करना चाहता हूं। मतलब उनमें से किसी ने भी जाँच नहीं की।

मेरे पास यह कोड है, लेकिन यह एक त्रुटि कह रहा है [0] is null or not an object

$('input[@name="correctAnswer"]')[0].checked = false;
$('input[@name="correctAnswer"]')[1].checked = false;
$('input[@name="correctAnswer"]')[2].checked = false;
$('input[@name="correctAnswer"]')[3].checked = false;

मैं IE 6 में यह कर रहा हूं।


यदि @ lambacck का जवाब आपके लिए काम नहीं करता है तो आप JQuery साइट [ Bugs.jquery.com/ticket/10910] पर बग ट्रैकर देखें । यदि आप हैं (जैसा कि मैं था ...) उन सभी डिफ़ॉल्ट मानों को रीसेट करने का प्रयास करने के लिए रेडियो बटन के एक सेट के माध्यम से लूपिंग, #(selector).prop('checked',true);विफल हो जाता है जब यह उसी समूह में बाद के रेडियो बटन को अनियंत्रित स्थिति में सेट करने का प्रयास करके पीछा करता है। ट्रिक केवल रेडियो बटन को एक जाँच की हुई स्थिति में सेट करने के लिए है और रेडियो बटन समूह को वह करने देता है जो दूसरों को अनचेक करता है ...) । साथ ही, कॉलिंग $(selector).click();कार्य करता है, और किसी भी सहयोगी घटनाओं को आग लगा देगा।
कॉस कैलिस

जवाबों:


270

1.6 उपयोग करने से पहले jQuery के संस्करणों में:

$('input[name="correctAnswer"]').attr('checked', false);

1.6 के बाद jQuery के संस्करणों में आपको उपयोग करना चाहिए:

$('input[name="correctAnswer"]').prop('checked', false);

लेकिन अगर आप 1.6.1+ का उपयोग कर रहे हैं तो आप पहले फॉर्म का उपयोग कर सकते हैं (नीचे नोट 2 देखें)।

नोट 1: यह महत्वपूर्ण है कि दूसरा तर्क झूठा हो और "झूठा" न हो क्योंकि "झूठा" कोई मिथ्या मूल्य नहीं है। अर्थात

if ("false") {
    alert("Truthy value. You will see an alert");
}

नोट 2: jQuery 1.6.0 के रूप में, अब दो समान तरीके हैं, .attrऔर .propयह दो संबंधित लेकिन थोड़ा अलग चीजें हैं। यदि इस विशेष मामले में, यदि आप 1.6.1+ का उपयोग करते हैं तो यह सलाह उपरोक्त कार्य प्रदान करती है। उपरोक्त 1.6.0 के साथ काम नहीं करेगा, यदि आप 1.6.0 का उपयोग कर रहे हैं, तो आपको अपग्रेड करना चाहिए। यदि आप विवरण चाहते हैं, तो पढ़ते रहें।

विवरण: जब सीधे HTML डोम तत्वों के साथ काम कर रहे हैं, वहाँ डोम तत्व (से जुड़ी गुण हैं checked, type, value, आदि) जो HTML पृष्ठ के चल रहे राज्य के लिए एक इंटरफेस प्रदान करते हैं। .getAttribute/ .setAttributeइंटरफ़ेस भी है जो HTML में दिए गए HTML गुण मान तक पहुँच प्रदान करता है। 1.6 jQuery से पहले .attrदोनों प्रकार के मूल्यों का उपयोग करने के लिए , एक विधि प्रदान करके अंतर को धुंधला कर दिया । jQuery 1.6+ दो तरीकों प्रदान करता है, .attrऔर .propइन स्थितियों के बीच अंतर मिलता है।

.propआपको DOM तत्व पर एक संपत्ति सेट करने की अनुमति देता है, जबकि .attrआप एक HTML विशेषता मान सेट करने की अनुमति देता है। आप सादे डोम और जाँच गुण सेट के साथ काम कर रहे हैं, तो elem.checked, करने के लिए trueया falseआपके द्वारा चलाए जा मूल्य (क्या उपयोगकर्ता देखता है) और पेज राज्य पर मान दिया पटरियों बदल जाते हैं। elem.getAttribute('checked')हालाँकि, केवल प्रारंभिक स्थिति देता है (और HTML से प्रारंभिक स्थिति के आधार पर 'checked'या रिटर्न undefined)। 1.6.1+ में .attr('checked', false)दोनों का उपयोग करते हुए elem.removeAttribute('checked')और elem.checked = falseपरिवर्तन के बाद से पीछे संगतता समस्याओं का एक बहुत कारण है और यह वास्तव में अगर आप HTML विशेषता या डोम संपत्ति सेट करना चाहते थे नहीं बता सकता। .Prop के लिए दस्तावेज़ में अधिक जानकारी देखें ।


दूसरे तर्क के लिए "झूठे" के बजाय झूठी पास करना महत्वपूर्ण है।
केसबश

दूसरे तर्क के लिए "गलत" महत्वपूर्ण है क्योंकि दूसरा तर्क सेट करने के लिए मूल्य है। यदि दूसरा तर्क खाली है, तो इसका मतलब है कि चयनकर्ता से मेल खाने वाले पहले तत्व का मूल्य मुझे दें।
लैम्बेक

1
@ नोल्डोरिन - "ट्रूथी" एक पूरी तरह से शब्द है। (क्या आप "सत्य" की अवधारणा को व्यक्त करने का एक बेहतर तरीका सुझा सकते हैं - केवल एक शब्द का उपयोग करके?)
nnnnnn

हेह, मेला शायद। हम सभी को शायद यह बात मिल गई है, हालांकि मैंने व्यक्तिगत रूप से अधिक औपचारिक "सत्यवादी" या "शब्दार्थ रूप से सत्य" को भी प्राथमिकता दी होगी।
नोल्डोरिन

3
@ नोल्डोरिन "ट्रूथी" और "फाल्सी" ऐसे कई जावास्क्रिप्ट विशेषज्ञ हैं, जिनमें ब्रेंडन ईच और डगलस क्रॉकफोर्ड शामिल हैंबूलियन मूल्यांकन 6 मिथ्या मूल्यों द्वारा परिभाषित किए जाने के बाद से महत्वपूर्ण शब्द गलत है । सत्य मिथ्या के विपरीत के लिए तार्किक नाम है। मुझे लगता है कि मिथ्या का उपयोग जानबूझकर किया गया था ताकि आप सोच सकें कि यह वह नहीं है जो आप के लिए उपयोग किया जाता है (अगर अन्य सी शैली वाक्यविन्यास भाषाओं से आ रहा है जहां 0 गलत है)।
लैंबाक

53

Jquery में रेडियोबुटन राज्य स्थापित करने का सबसे अच्छा तरीका:

HTML:

<input type="radio" name="color" value="orange" /> Orange 
<input type="radio" name="color" value="pink" /> Pink 
<input type="radio" name="color" value="black" /> Black
<input type="radio" name="color" value="pinkish purple" /> Pinkish Purple

एक बटन को पूर्व-चयन करने के लिए Jquery (1.4+) कोड:

var presetValue = "black";
$("[name=color]").filter("[value='"+presetValue+"']").attr("checked","checked");

Jquery में 1.6+ कोड .prop () विधि पसंद की जाती है:

var presetValue = "black";
$("[name=color]").filter("[value='"+presetValue+"']").prop("checked",true);

बटन अचयनित करने के लिए:

$("[name=color]").removeAttr("checked");

10

आपकी समस्या यह है कि विशेषता चयनकर्ता a से प्रारंभ नहीं होता है @

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

$('input[name="correctAnswer"]').attr('checked', false);


4

अंत में बहुत सारे परीक्षणों के बाद, मुझे लगता है कि प्रीसेट का सबसे सुविधाजनक और कुशल तरीका है:

var presetValue = "black";
$("input[name=correctAnswer]").filter("[value=" + presetValue + "]").prop("checked",true);
$("input[name=correctAnswer]").button( "refresh" );//JQuery UI only

JQueryUI ऑब्जेक्ट के साथ रिफ्रेश आवश्यक है।

मूल्य प्राप्त करना आसान है:

alert($('input[name=correctAnswer]:checked').val())

JQuery 1.6.1, JQuery UI 1.8 के साथ परीक्षण किया गया।


2

मुझे पता है कि यह पुराना है और यह एक छोटा विषय है, लेकिन आपको लगता है कि एक संग्रह में केवल विशिष्ट रेडियो बटन अनचेक करना चाहते थे:

$("#go").click(function(){
    $("input[name='correctAnswer']").each(function(){
      if($(this).val() !== "1"){
        $(this).prop("checked",false);
      }
    });
  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="radio1" type="radio" name="correctAnswer" value="1">1</input>
<input id="radio2" type="radio" name="correctAnswer" value="2">2</input>
<input id="radio3" type="radio" name="correctAnswer" value="3">3</input>
<input id="radio4" type="radio" name="correctAnswer" value="4">4</input>
<input type="button" id="go" value="go">

और यदि आप एक रेडियोबॉटन सूची के साथ काम कर रहे हैं, तो आप: चेक किए गए चयनकर्ता का उपयोग कर सकते हैं ताकि आप केवल एक चाहते हैं।

$("#go").click(function(){
  $("input[name='correctAnswer']:checked").prop("checked",false);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="radio1" type="radio" name="correctAnswer" value="1">1</input>
<input id="radio2" type="radio" name="correctAnswer" value="2">2</input>
<input id="radio3" type="radio" name="correctAnswer" value="3">3</input>
<input id="radio4" type="radio" name="correctAnswer" value="4">4</input>
<input type="button" id="go" value="go">

0

रेडियो बटन सेट के माध्यम से जाँच की jquery:

<div id="somediv" >
 <input type="radio" name="enddate" value="1"  />
 <input type="radio" name="enddate" value="2"  />
 <input type="radio" name="enddate" value="3"  />
</div>

jquery कोड:

$('div#somediv input:radio:nth(0)').attr("checked","checked");

0

यदि आप DOM में सभी रेडियो बटन साफ़ करना चाहते हैं:

$('input[type=radio]').prop('checked',false);


0
<div id="radio">
<input type="radio" id="radio1" name="radio"/><label for="radio1">Bar Chart</label>
<input type="radio" id="radio2" name="radio"/><label for="radio2">Pie Chart</label>
<input type="radio" id="radio3" name="radio"/><label for="radio3">Datapoint Chart</label>
</div>

$('#radio input').removeAttr('checked');
// Refresh the jQuery UI buttonset.                  
$( "#radio" ).buttonset('refresh');

0

हालाँकि प्रोप ने जाँच की स्थिति को बदल दिया लेकिन परिवर्तन यह भी दर्शाता है कि प्रपत्र में।

$('input[name="correctAnswer"]').prop('checked', false).change();

-1

आपके पास कहाँ है: <input type="radio" name="enddate" value="1" />

मूल्य = "1" के बाद आप बस जोड़ भी सकते हैं unchecked =" false" />

लाइन तब होगी:

<input type="radio" name="enddate" value="1" unchecked =" false" />

1
अरे मुझे लगता है कि आपने अपना जवाब अधूरा छोड़ दिया।
अमर

-2

सभी रेडियो बटन को डिफ़ॉल्ट पर सेट करें:

$("input[name='correctAnswer']").checkboxradio( "refresh" );

फ़ंक्शन checkboxradio () jQuery 2.x में परिभाषित नहीं है। क्या यह एक एक्सटेंशन था जिसका आप उपयोग कर रहे थे?
justdan23

-3

आप ऐसा क्यों नहीं करते:

$("#radio1, #radio2, #radio3, #radio4").checked = false;

1
आप सिर्फ jQuery कॉल से लौटी सरणी पर चेक की गई प्रॉपर्टी को सेट नहीं कर सकते, आपको उस प्रॉपर्टी को एरे के भीतर मौजूद आइटम्स पर सेट करने के लिए attr () फंक्शन का उपयोग करना होगा।
bdukes

यह तब 'अनियंत्रित' नहीं बन रहा है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.