কীভাবে jQuery এ রেডিওব্যাটানগুলি পুনরায় সেট করবেন যাতে কোনওটি পরীক্ষিত হয় না


136

আমার এইচটিএমএলে রেডিও বোতাম রয়েছে:

<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;

আমি আইই 6 এ করছি।


@ ল্যাম্ব্যাকের উত্তর যদি আপনার পক্ষে কাজ না করে তবে আপনি JQuery সাইটে [ bugs.jquery.com/ticket/10910] তে বাগ ট্র্যাকার দেখতে পান । যদি আপনি (আমি যেমন ছিলাম ...) সমস্ত ডিফল্ট মানগুলিতে পুনরায় সেট করার চেষ্টা করার জন্য রেডিও বোতামগুলির একটি সেট দিয়ে লুপ করছি, #(selector).prop('checked',true);ব্যর্থ হয় যখন এটি একই গ্রুপে পরবর্তী রেডিও বোতামটি একটি চেক না করা স্থিতিতে সেট করার চেষ্টা করে। কৌশলটি কেবলমাত্র একটি চেক করা অবস্থায় রেডিও বোতাম সেট করা এবং রেডিও বোতাম গোষ্ঠীটি যা করে তা করতে দিন (অন্যদেরকে চেক করুন ...) । এছাড়াও, কলিং $(selector).click();কাজ করে এবং কোনও সহযোগী ইভেন্টগুলিকে আগুন ধরিয়ে দেবে।
কোস কলিস 21

উত্তর:


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 ব্যবহার করেন তবে আপনার আপগ্রেড করা উচিত। আপনি যদি বিশদ চান তবে পড়া চালিয়ে যান।

বিবরণ: যখন সোজা এইচটিএমএল DOM উপাদানে সঙ্গে কাজ, সেখানে DOM উপাদান (সংযুক্ত সম্পত্তি checked, type, value, ইত্যাদি) যা এইচটিএমএল পৃষ্ঠার চলমান অবস্থায় একটি ইন্টারফেস প্রদান। এখানে .getAttribute/ .setAttributeইন্টারফেস রয়েছে যা এইচটিএমএল হিসাবে প্রদত্ত HTML বৈশিষ্ট্য মানগুলিতে অ্যাক্সেস সরবরাহ করে। .attr১. Before এর আগে jQuery উভয় ধরণের মান অ্যাক্সেস করার জন্য একটি পদ্ধতি সরবরাহ করে পার্থক্যটি ঝাপসা করে । jQuery 1.6+ দুটি পদ্ধতি সরবরাহ করে .attrএবং .propএই পরিস্থিতির মধ্যে পার্থক্য পেতে।

.propআপনাকে একটি ডিওএম এলিমেন্টে একটি সম্পত্তি সেট করার .attrঅনুমতি দেয় , যখন আপনাকে একটি HTML বৈশিষ্ট্য মান সেট করতে দেয় value আপনি প্লেইন DOM এবং পরীক্ষিত বৈশিষ্ট্য নির্ধারণের সঙ্গে কাজ করেন, তাহলে elem.checked, এর trueবা falseআপনি চলমান মান (কি ব্যবহারকারী সূচিত) এবং পৃষ্ঠা রাষ্ট্র উপর মান ট্র্যাক পরিবর্তন করুন। elem.getAttribute('checked')তবে কেবলমাত্র প্রাথমিক অবস্থায় ফিরে আসে (এবং HTML থেকে প্রাথমিক অবস্থার উপর নির্ভর করে 'checked'বা ফিরে আসে undefined)। 1.6.1+ এ উভয়ই ব্যবহার .attr('checked', false)করে elem.removeAttribute('checked')এবং elem.checked = falseযেহেতু পরিবর্তনটি অনেক পিছনের সামঞ্জস্যতার সমস্যার কারণ হয়ে দাঁড়িয়েছে এবং আপনি এইচটিএমএল বৈশিষ্ট্য বা ডোম সম্পত্তি সেট করতে চান কিনা তা সত্যই তা বলতে পারে না। .Prop এর জন্য ডকুমেন্টেশনে আরও তথ্য দেখুন ।


দ্বিতীয় যুক্তির জন্য "মিথ্যা" না দিয়ে মিথ্যা পাস করা গুরুত্বপূর্ণ।
কেসব্যাশ

দ্বিতীয় আর্গুমেন্টের জন্য "মিথ্যা" গুরুত্বপূর্ণ কারণ দ্বিতীয় যুক্তিটি সেট করার মান। যদি দ্বিতীয় যুক্তিটি খালি থাকে তবে এর অর্থ এটি আমাকে নির্বাচকের সাথে মেলে এমন প্রথম উপাদানটির মান দিন।
ল্যামব্যাক

1
@ নলডোরিন - "সত্যবাদী" হ'ল একটি নিখুঁত শব্দ ulent (আপনি কেবলমাত্র একটি শব্দ ব্যবহার করে "সত্যবাদী" ধারণাটি প্রকাশ করার আরও ভাল উপায়ের পরামর্শ দিতে পারেন?)
nnnnnn

হেই, যথেষ্ট যথেষ্ট। আমরা সকলেই সম্ভবত এই বক্তব্যটি পাই, যদিও আমি ব্যক্তিগতভাবে আরও বেশি প্রথাগত "সত্যবাদী" বা "শব্দার্থত সত্যবাদী" এমনকি পছন্দ করতাম।
নলডোরিন

3
@Noldorin "Truthy" এবং "falsy" সহ পদ অনেক জাভাস্ক্রিপ্ট বিশেষজ্ঞদের ব্যবহার করেন, হয় ব্রেন্ডন Eich এবং ডগলাস Crockford । মূল শব্দটি মিথ্যা কারণ যেহেতু বুলিয়ান মূল্যায়নগুলি 6 টি মিথ্যা মানগুলি দ্বারা সংজ্ঞায়িত করা হয় । মিথ্যা বিপরীতে যুক্তিযুক্ত নাম সত্যবাদিতা। আমি মনে করি মিথ্যা ব্যবহারের উদ্দেশ্যমূলক ব্যবহারটি আপনাকে মনে করিয়ে দেওয়ার জন্য ব্যবহৃত হয়েছিল যে আপনি ব্যবহার করছেন এটি এটি নাও হতে পারে (অন্যান্য সি স্টাইলের সিনট্যাক্স ভাষা যেখানে 0 টি মিথ্যা থেকে আসে তবে স্পষ্ট করে নিন)।
ল্যামব্যাক

53

জিকিউরিতে রেডিওবটন রাজ্যটি নির্ধারণের সেরা উপায়:

এইচটিএমএল:

<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

আপনার সমস্যাটি হ'ল গুণাবলী নির্বাচনকারী একটি দিয়ে শুরু হয় না @

এটা চেষ্টা কর:

$('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

আপনি যদি ডিওমে সমস্ত রেডিও বোতাম সাফ করতে চান:

$('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" );

ফাংশন চেকবক্স্রাডিও () jQuery 2.x এ সংজ্ঞায়িত করা হয়নি। এটি কি আপনি কোনও এক্সটেনশন ব্যবহার করছেন?
justdan23

-3

আপনি কেন করবেন না:

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

1
আপনি কেবল jQuery কল থেকে ফিরে আসা অ্যারেতে চেক করা সম্পত্তি সেট করতে পারবেন না, অ্যারের মধ্যে থাকা আইটেমগুলিতে সেই সম্পত্তিটি সেট করতে আপনাকে অ্যাটর () ফাংশনটি ব্যবহার করতে হবে।
বিডুকস

এটি তখন 'চেকড' করা হচ্ছে না
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.