কীভাবে রেডিও অপশনটি জিকুয়েরির সাথে অনলোড পরীক্ষা করে সেট করা যায়


297

JQuery এর সাহায্যে কীভাবে রেডিও অপশন চেক করা হবে?

কোনও ডিফল্ট সেট না করা আছে কিনা তা পরীক্ষা করে ডিফল্ট সেট করা দরকার


1
আমি অন্য প্রশ্নটির আগে আমাকে জিজ্ঞাসা করায় @Renus অন্য প্রশ্নটি কি আমার নকল হবে না?
ফিলফ প্যাফোর্ড

উত্তর:


558

বলুন আপনার কাছে রেডিও বোতামগুলি ছিল যেমন, উদাহরণস্বরূপ:

<input type='radio' name='gender' value='Male'>
<input type='radio' name='gender' value='Female'>

এবং যদি কোনও রেডিও চেক না করা হয় তবে আপনি "পুরুষ" অনলোডের মান সহ একটিটি পরীক্ষা করতে চেয়েছিলেন:

$(function() {
    var $radios = $('input:radio[name=gender]');
    if($radios.is(':checked') === false) {
        $radios.filter('[value=Male]').prop('checked', true);
    }
});

পাওলোকে অবাক করেই, আইআইআরসি স্পেকটি বলেছে যে চেক করা বৈশিষ্ট্যটি বোঝানো হয়েছে = "চেক করা" (যদিও আমি ভুল হতে পারি)। JQuery এই উদাহরণে 'চেকড' এর সাথে সত্য অনুবাদ করে? কেবল কৌতূহলী ...
অ্যালেক্স

8
আমার আসল উদাহরণটিতে 'চেকড', 'চেক করা' ছিল, এটি এমন একটি জিনিস যা আমি কখনই সঠিক মনে করতে পারি না। jQuery এটি কোনও উপায়ে খুঁজে বের করে, তবে আমি জানি আপনি যদি কোনও ডিওএম উপাদানটির প্রকৃত চেক বৈশিষ্ট্যটি সেট করতে চান তবে এটি একটি বুলিয়ান, যেমন, ডকুমেন্ট.জেটমেন্টমেন্টবাইআইডি ('এক্স') বলে মনে করা হচ্ছে checked পরীক্ষিত = সত্য; - তাই আমি সাথে ছিল।
পাওলো বার্গান্টিনো

এই স্কোয়ার ব্র্যাকেট সংকেতটি কেবল যুক্ত করতে চান [নাম = লিঙ্গ] উইন্ডোজ ফোনের স্টক ব্রাউজারে কাজ করে না 7.

আমি এফএফ এবং jQuery 1.9.1 এবং .attr ('চেক করা', সত্য) দিয়ে এটিকে চেষ্টা করেছিলাম; তবে কাজ করে না .প্রপ ('পরীক্ষিত', সত্য); আছে। স্ট্যাকওভারফ্লো দেখুন / প্রশ্নগুলি / 4618733/… (সদৃশ?)
আইআরআই

একটি দ্রুত: প্রপের $radios.removeAttr('checked')আগে ব্যবহার করবেন না । এটি ব্রাউজার এবং পোস্ট মানগুলিকে বিভ্রান্ত করবে।
ইগস্প্রেতোটো

109

কিভাবে একটি ওলাইনার?

$('input:radio[name="gender"]').filter('[value="Male"]').attr('checked', true);

উপরেরটি আরও জটিল হিসাবে এটি আরও জটিল নাম মানকে সমর্থন করে।
জে মার্টিন

13
এটি অপ্সের প্রশ্নের পুরোপুরি উত্তর দেয় না - এটির জন্য ডিফল্ট বিকল্পটি ইতিমধ্যে চেক করা হয়েছে কিনা তা যাচাই করা দরকার। এছাড়াও আপনার এখন এই জাতীয় জিনিসটির জন্য অ্যাট্রি () এর পরিবর্তে প্রপ () ব্যবহার করা উচিত। ব্যাখ্যার জন্য, এখানে "বৈশিষ্ট্য বনাম সম্পত্তি" বিভাগটি দেখুন: api.jquery.com/prop । অতিরিক্ত ফিল্টারটির প্রয়োজন নেই, আপনি কেবলমাত্র ২ জন নির্বাচককে মিশ্রণ করতে পারেন যেমন $ ("ইনপুট [নাম = লিঙ্গ] [মান = পুরুষ]") prop প্রপ ("পরীক্ষিত", সত্য);
jackocnr

3
এই সমাধানটি প্রথমবারের জন্য আমি রেডিও সেট করি কিন্তু পরে ব্যর্থ হয়। "অ্যাটার" এর পরিবর্তে "প্রোপ" ব্যবহার করে এটি পুরোপুরি কার্যকর হয়। সুতরাং: $ ('ইনপুট: রেডিও [নাম = "লিঙ্গ"]') filter ফিল্টার ('[মান = "পুরুষ"]') prop
অ্যান্ড্রু

2
সঠিক - প্রোপ () এখন বৈশিষ্ট্য অ্যাক্সেসের জন্য প্রস্তাবিত পদ্ধতি।
অ্যান্ড্রু ম্যাককম্বে

1
সরল: $ ('ইনপুট: রেডিও [নাম = "লিঙ্গ"] [মান = "পুরুষ"]') att অ্যাটর ('চেক করা', সত্য);
রাজিস

52

এটি ফর্ম.সেট () ব্যর্থতার কারণ ঘটবে:

$('input:radio[name=gender][value=Male]').attr('checked', true);

তবে এটি কাজ করে:

$('input:radio[name=gender][value=Male]').click();

5
আমি সুপারিশ করব আপনি ট্রিগার ('ক্লিক করুন') কিছুটা বেশি পঠনযোগ্য এবং কোনও পদ্ধতি কল বন্ধ করুন s
বার্কর্ম্ন 01

35

জিক্যুরির রেডিও এবং চেকবক্সগুলির জন্য পরীক্ষিত স্থিতি নির্ধারণের দুটি উপায় রয়েছে এবং এটি আপনি এইচটিএমএল মার্কআপে মান বৈশিষ্ট্য ব্যবহার করছেন কিনা তার উপর নির্ভর করে:

যদি তাদের মান বৈশিষ্ট্য থাকে:

$("[name=myRadio]").val(["myValue"]);

তাদের যদি মান বৈশিষ্ট্য না থাকে:

$("#myRadio1").prop("checked", true);

আরো বিস্তারিত

প্রথম ক্ষেত্রে, আমরা নাম ব্যবহার করে পুরো রেডিও গ্রুপটি নির্দিষ্ট করি এবং ভাল ফাংশন ব্যবহার করে নির্বাচন করতে রেডিও খুঁজে পেতে JQuery কে বলি। ভ্যাল ফাংশনটি 1-উপাদান অ্যারে নেয় এবং রেডিওটিকে মিলে যাওয়া মান সহ সন্ধান করে = সত্য সেট করে। একই নামের অন্যরা অনির্বাচিত হবে। যদি মিলে যাওয়া মান সহ কোনও রেডিও না পাওয়া যায় তবে সমস্তটি অনির্বাচিত হবে। যদি একই নাম এবং মান সহ একাধিক রেডিও থাকে তবে সর্বশেষটি নির্বাচন করা হবে এবং অন্যরা নির্বাচন থেকে বিচ্ছিন্ন হয়ে যাবে।

আপনি যদি রেডিওর জন্য মান অ্যাট্রিবিউট ব্যবহার না করে থাকেন তবে গ্রুপে নির্দিষ্ট রেডিও নির্বাচন করতে আপনাকে অনন্য আইডি ব্যবহার করতে হবে। এই ক্ষেত্রে, আপনাকে "চেক করা" সম্পত্তি সেট করতে প্রপ ফাংশন ব্যবহার করতে হবে। অনেক লোক চেকবক্সগুলির সাথে মান বৈশিষ্ট্য ব্যবহার করেন না তাই চেকবক্সগুলি তখন রেডিওগুলির জন্য # 2 আরও প্রযোজ্য। আরও মনে রাখবেন যে চেকবক্সগুলি একই নাম রাখলে গ্রুপ গঠন করে না, আপনি এটি করতে পারেন$("[name=myCheckBox").prop("checked", true); চেকবাক্সগুলির জন্য ।

আপনি এই কোডটি এখানে খেলতে পারেন: http://jsbin.com/OSULAtu/1/edit?html , আউটপুট


22

উত্তরটি আমি @ এমসি দ্বারা পছন্দ করেছি। আমি দেখতে পেয়েছি যে ফিল্টার () কলটি ব্যবহার না করার জন্য অভিব্যক্তিটি আরও ঘনীভূত হতে পারে (@ শাইকো দৃশ্যত এটিও লক্ষ্য করেছেন)। এছাড়াও, প্রপ () হ'ল জিকুয়েরি v1.6 + এর জন্য বনাম অ্যাট্রি () যাওয়ার উপায়, প্রপ () জন্য jQuery ডকুমেন্টেশন দেখুন সরকারী সেরা অনুশীলনের জন্য ।

@ পাওলো বার্গান্টিনোর উত্তর থেকে একই ইনপুট ট্যাগগুলি বিবেচনা করুন।

<input type='radio' name='gender' value='Male'>
<input type='radio' name='gender' value='Female'>

আপডেট করা ওয়ান-লাইনার এমন কিছু পড়তে পারে:

$('input:radio[name="gender"][value="Male"]').prop('checked', true);

15

আমি মনে করি আপনি ধরে নিতে পারেন, সেই নামটি অনন্য এবং গোষ্ঠীর সমস্ত রেডিওর একই নাম রয়েছে। তারপরে আপনি এর মতো jQuery সমর্থন ব্যবহার করতে পারেন:

$("[name=gender]").val(["Male"]);

দ্রষ্টব্য: অ্যারে পাস করা গুরুত্বপূর্ণ।

শর্তযুক্ত সংস্করণ:

if (!$("[name=gender]:checked").length) {
    $("[name=gender]").val(["Male"]);
}

1
এটি এমন কোনও মানের জন্য আপনার প্রতিটি উপাদানকে স্ক্যান করা খারাপ যা আমি এটি ব্যবহার না করার প্রস্তাব দিই না
বার্কার্ম্ন ০১

@ মার্টিন বার্কার আপনি কী স্ক্যানিং করে পুরুষদের বোঝাতে পারেন?
সারম

ডোম অনুসন্ধান করছে, আপনি যদি ডাবের প্রতিটি উপাদানকে যেতে বাধ্য করেন তবে আপনাকে জিকুরির জন্য বাধ্যতামূলক বৈশিষ্ট্য ব্যতীত অন্য কিছু ব্যবহার না করে এবং সেই ম্যাচের জন্য একই পরীক্ষা করে দেখুন যে আপনি $("*")এটি ব্যবহার করছেন তা সমস্ত কিছুর সাথে মেলে যাতে আপনার কোনও প্রকার ইজারা $("input")বা আইডি ব্যবহার করা উচিত আইডির মাধ্যমে একটি উপাদান পাওয়ার জন্য ডোমের স্থানীয় কল রয়েছে বলে আদর্শ
হোন

@ মার্টিন বার্কার - আমি সম্মত সাধারণত আমি নির্বাচককে ফর্ম আইডি সহ প্রিফিক্স করি বা প্রসঙ্গের পরম সরবরাহ করি। বর্তমানে ডিওএম স্ক্যান করা jQuery প্রচেষ্টা নয় তবে অভ্যন্তরীণ ব্রাউজার ইঞ্জিন, document.querySelectorAllসমস্ত কাজ করে।
সারম

উপরোক্ত উদ্বেগের সমাধানের জন্য, ব্যবহার করুন $("input[name=gender]")বা $("input[name=gender]:radio")(আধুনিক ব্রাউজারগুলির জন্য)$("input[name=gender][type=radio]")
ডেভিড বালাইচ

7

আপনি যদি এটি সত্যই গতিশীল হতে চান এবং আগত ডেটার সাথে সঙ্গতিপূর্ণ রেডিও নির্বাচন করেন তবে এটি কাজ করে। এটি ডিফল্টে পাস করা বা ব্যবহার করা ডেটার লিঙ্গ মান ব্যবহার করে।

if(data['gender'] == ''){
 $('input:radio[name="gender"][value="Male"]').prop('checked', true);
}else{
  $('input:radio[name="gender"][value="' + data['gender'] +'"]').prop('checked', true);
};

5

নেটিভ জেএস সমাধান:

 document.querySelector('input[name=gender][value=Female]').checked = true;

http://jsfiddle.net/jzQvH/75/

এইচটিএমএল:

<input type='radio' name='gender' value='Male'> Male
<input type='radio' name='gender' value='Female'>Female

3

এবং আপনি যদি নিজের মডেল থেকে কোনও মান পাস করতে চান এবং ব্যবহারের চেয়ে মানের উপর ভিত্তি করে লোডের ভিত্তিতে গ্রুপ থেকে একটি রেডিও বোতামটি নির্বাচন করতে চান:

jQuery:

var priority = Model.Priority; //coming for razor model in this case
var allInputIds = "#slider-vertical-" + itemIndex + " fieldset input";

$(allInputIds).val([priority]); //Select at start up

এবং এইচটিএমএল:

<div id="@("slider-vertical-"+Model.Id)">
 <fieldset data-role="controlgroup" data-type="horizontal" data-mini="true">
    <input type="radio" name="@("radio-choice-b-"+Model.Id)" id="@("high-"+Model.Id)" value="1" checked="checked">
    <label for="@("high-"+Model.Id)" style="width:100px">@UIStrings.PriorityHighText</label>

    <input type="radio" name="@("radio-choice-b-"+Model.Id)" id="@("medium-"+Model.Id)" value="2">
    <label for="@("medium-"+Model.Id)" style="width:100px">@UIStrings.PriorityMediumText</label>

    <input type="radio" name="@("radio-choice-b-"+Model.Id)" id="@("low-"+Model.Id)" value="3">
    <label for="@("low-"+Model.Id)" style="width:100px">@UIStrings.PriorityLowText</label>
 </fieldset>
</div>

2

সব দরকার নেই। সহজ এবং পুরানো এইচটিএমএল দিয়ে আপনি যা চান তা অর্জন করতে পারেন। আপনি যদি রেডিওটিকে ডিফল্টরূপে চেক করতে চান তবে:
<input type='radio' name='gender' checked='true' value='Male'>
পৃষ্ঠাটি লোড হয়ে গেলে এটি চেক হয়ে আসবে।


3
হ্যাঁ তবে রেফারিং সাইটটি পৃষ্ঠা লোডের ডিফল্টগুলিতে পাস হওয়ায় আমার এটি গতিশীল হওয়ার দরকার। আমি যখন এই প্রশ্নটি সম্পর্কে ভেবেছি তখন একটি সময় হয়ে গেছে তাই আমি আশা করি আপনি কী বলতে চাইছেন তা আমি বুঝতে পেরেছি
ফিল প্যাফোর্ড


2

এখানে উপরোক্ত পদ্ধতিগুলির সাথে উদাহরণ দেওয়া হল:

<div class="ui-field-contain">
<fieldset data-role="controlgroup" data-type="horizontal">    <legend>Choose a pet:</legend>
    <input type="radio" name="radio-choice-2" id="radio-choice-1" value="choice1">
    <label for="radio-choice-1">Cat</label>

    <input type="radio" name="radio-choice-2" id="radio-choice-2" value="choice2">
    <label for="radio-choice-2">Dog</label>

    <input type="radio" name="radio-choice-2" id="radio-choice-3" value="choice3">
    <label for="radio-choice-3">Hamster</label>

    <input type="radio" name="radio-choice-2" id="radio-choice-4" value="choice4">
    <label for="radio-choice-4">Lizard</label>
  </fieldset>
</div>

জাভাস্ক্রিপ্টে:

$("[name = 'radio-choice-2'][value='choice3']").prop('checked', true).checkboxradio('refresh');

1

রেডিও ইনপুট মানগুলি পাওয়ার সময় এই আচরণটি নোট করুন:

$('input[name="myRadio"]').change(function(e) { // Select the radio input group

    // This returns the value of the checked radio button
    // which triggered the event.
    console.log( $(this).val() ); 

    // but this will return the first radio button's value,
    // regardless of checked state of the radio group.
    console.log( $('input[name="myRadio"]').val() ); 

});

সুতরাং $('input[name="myRadio"]').val()রেডিও ইনপুটটির চেক করা মানটি ফেরত দেয় না, যেমনটি আপনি আশা করতে পারেন - এটি প্রথম রেডিও বোতামটির মান প্রদান করে।


1

এটি Jquery obtiene একক এল উপাদান পরীক্ষা করা হয়েছে

$('input[name="radioInline"]:checked').val()

2
আপনাকে নিজের উত্তরটি বর্ণনা করতে হবে এবং আপনার কোডটি ফর্ম্যাট করতে হবে
মাইকেল

0

// আপনি যদি এটি জাভাস্ক্রিপ্ট বা ব্যাকবোন জাতীয় কাঠামোতে করছেন, আপনি এটির মুখোমুখি হবেন আপনি এর মতো কিছু পেতে পারেন have

$MobileRadio = $( '#mobileUrlRadio' );

যখন

$MobileRadio.checked = true;

কাজ করবে না,

$MobileRadio[0].checked = true;

ইচ্ছাশক্তি.

আপনার নির্বাচক উপরে প্রস্তাবিত অন্যান্য ছেলেদের হিসাবেও হতে পারে।


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