এর পাঠ্য দ্বারা কোন বিকল্পটি আমার বেছে নিতে হবে?


207

আমাকে <select>এমন একটি বিকল্প আছে যা পরীক্ষা করে একটি নির্দিষ্ট মানের সমান হয় কিনা তা পরীক্ষা করতে হবে।

উদাহরণস্বরূপ, যদি সেখানে থাকে তবে <option value="123">abc</option>আমি "এবিসি" খুঁজছি।

এটি করার জন্য কি কোনও নির্বাচক আছেন?

আমি $('#select option[value="123"]');পাঠ্যের জন্য তবে এর মতো কিছু খুঁজছি ।


হুম ... hasএসএলএক্স-এর উত্তর কার্যকর, তবে ফ্লাইডসের উত্তরের বিষয়টিও ভাল ... আমি কী গ্রহণ করব তা আমি জানি না।
হাইলউড

এছাড়াও, এই ক্ষেত্রে সংবেদনশীল হয়? (আমি কেস-সংবেদনশীলতা খুঁজছি এবং সর্বদা কেবল নিম্নে রূপান্তর করতে পারি
হাইলউড

1
আমি জাভাস্ক্রিপ্ট মূল ফাংশন .toLowerCase () ব্যবহার করি এবং তুলনা করি, যদি কেস-সংবেদনশীলতা প্রয়োজন হয়। এছাড়াও, আপনার জিজ্ঞাসিত প্রশ্নের জন্য যেটি সবচেয়ে কার্যকর সেটির উত্তর হিসাবে গ্রহণ করুন। :)
হরি পাছুভিতিল

এটি মাল্টিসलेक्ट এপিআই থাকা ড্রপডাউনটির জন্য কাজ করে না ?? আমি ভাগ্যবান হওয়ার সম্ভাব্য সব সমাধান চেষ্টা করেছি। আমি এরিক হিন্দের মাল্টিলেসলেট ড্রপডোম এপিআই ব্যবহার করছি। কেউ কি এই সমস্যার সমাধান করতে পারবেন?
চৈতন্য চন্দুরকর

উত্তর:


320

এটি সাহায্য করতে পারে:

$('#test').find('option[text="B"]').val();

ডেমো ভাজা

এটি আপনাকে পাঠ্য সহ বিকল্পটি দেবে B এবং এতে যে পাঠ্য রয়েছে তা নয় B। আশাকরি এটা সাহায্য করবে

JQuery এর সাম্প্রতিক সংস্করণের জন্য উপরেরটি কাজ করে না। হিসাবে Quandary মন্তব্যনীচের , jQuery 1.9.1 এর জন্য এটি কাজ করে:

$('#test option').filter(function () { return $(this).html() == "B"; }).val();

আপডেট


1
এটি jquery এর সর্বশেষতম সংস্করণগুলির সাথে কাজ করে না (যদি আপনি <option> থেকে 'মান =' অপসারণ করেন)
কেভিনডিউস

27
@ কেভিনডিউস: ডাউনভোট কেন !? উত্তরটি তখন jQuery এর সংস্করণের জন্য!
হরি পাচুভিটিল

11
পরিবর্তে, use ('# পরীক্ষার বিকল্প') ব্যবহার করুন filter ফিল্টার (ফাংশন () {রিটার্ন $ (এটি) h html () == "বি";})
স্টিফান স্টেইগার

84
@ গুপ্তচর তবুও, যখন একটি সংক্ষিপ্ত মন্তব্য যথেষ্ট হবে তখন উত্তরটি ভোট দেওয়ার কোনও বৈধ কারণ নয়। বা আপনি কি তার কাছে jQuery এর প্রতিটি নতুন রিলিজের জন্য তার সমস্ত উত্তর পরীক্ষা করে দেখার প্রত্যাশা করছেন?
WynandB

2
আমি মনে করি যে উপরের উদাহরণটি কেবল নির্বাচিত মানটি সন্ধান করে এবং নির্বাচিত মান সেট করে না তার কারণেই এই ডাউনভোটটি।
nivs1978

133

আপনি নির্দিষ্ট পাঠ্যযুক্ত উপাদান নির্বাচন করতে :contains()নির্বাচকটি ব্যবহার করতে পারেন the
উদাহরণ স্বরূপ:

$('#mySelect option:contains(abc)')

প্রদত্ত <select>উপাদানটির এমন কোনও বিকল্প রয়েছে কিনা তা পরীক্ষা করতে, .has()পদ্ধতিটি ব্যবহার করুন :

if (mySelect.has('option:contains(abc)').length)

এই <select>জাতীয় বিকল্প রয়েছে এমন সমস্ত সন্ধান করতে, :has()নির্বাচকটি ব্যবহার করুন :

$('select:has(option:contains(abc))')

3
:containsএখনই চূড়ান্ত নয়, তাই না?
হরি পাচুভিটিল

ঠিক তেমন সমস্যাটি কী?
ওজিয়ার শেহেলভিস

আপনি কেবলমাত্র নির্বাচিত বিকল্পগুলির সাথে এটি কীভাবে করবেন?
টুডমো

এটিও কি কোনও বিকল্প দখল করে না 123abcdef?
তেপীম্ম

@ টিপিম্ম হ্যাঁ, এটি শীর্ষ দুটি উত্তরের মধ্যে পার্থক্য। শীর্ষস্থানীয় চেকগুলি কেবলমাত্র নির্দিষ্ট পাঠ্য সহ বিকল্পটি প্রদান করে, এইটি সেই বিকল্পটি উপস্থিত করে যা কেবলমাত্র সেই নির্দিষ্ট পাঠ্যকেই দেয়। কোনটি কাকতালীয়ভাবে এই মুহূর্তে আমার আসলে প্রয়োজন তাই এটি পোস্ট করে আমি খুব আনন্দিত।
লি এ।

30

পূর্ববর্তী কোনও পরামর্শই আমার জন্য jQuery 1.7.2 এ কাজ করেনি কারণ আমি পাঠ্যের বাক্স থেকে প্রাপ্ত মানের ভিত্তিতে তালিকার নির্বাচিত সূচকটি সেট করার চেষ্টা করছি এবং কিছু পাঠ্য মান একাধিক বিকল্পের মধ্যে রয়েছে। আমি নিম্নলিখিত ব্যবহার করে শেষ:

$('#mySelect option:contains(' + value + ')').each(function(){
    if ($(this).text() == value) {
        $(this).attr('selected', 'selected');
        return false;
    }
    return true;
});

1
আমি মনে করি এটি সেরা উত্তর কারণ এটি আসলে সঠিক ফলাফল দেয়। তবে আমি সাহায্য করতে পারি না তবে মনে করি containsপুরোপুরি বাদ দেওয়া আসলে জিনিসগুলিকে গতিতে পারে।
styfle

এটি আমার পক্ষে কাজ করেছে তবে আমার দৃশ্যে আমি এক গ্রিডে একাধিকবার সম্পাদনা ক্লিক করতে পারি তাই কোন মিল নেই যখন নির্বাচিত বৈশিষ্ট্যগুলি মুছে ফেলতে হবে অন্যথায় নির্বাচিত প্রথম বিকল্পটি পরবর্তী সম্পাদনাগুলির জন্যই থাকবে। অন্য {{(এটি) .attr ('নির্বাচিত', ''); প্রত্যাবর্তন মিথ্যা; }
এএসপি

এই সমাধানটি আমার পক্ষে কাজ করেছে কিন্তু বিকল্প বৈশিষ্ট্যটি স্থির করার পরিবর্তে, আমার যা করা দরকার তা নির্বাচিত মেনুটি পরিবর্তনের জন্য: $(this).parent().val($(this).val()); আপনি সম্ভবত দুটোই করতে পারেন, তবে আমার জন্য কেবল পিতামাতাকে সেট val()করার কৌশলটি করেছিলেন।
বিলেন্নো


15

এটি আমার পক্ষে কাজ করেছে: $("#test").find("option:contains('abc')");


3
এটি কেন কাজ করছে তা আপনার একটি ব্যাখ্যা যুক্ত করা উচিত ।
হ্যানস জোহানসন

@ হান্নস জোহানসন বা তার কমপক্ষে পাঁচ বছরের পুরানো এসএলএক্স জবাবের চেয়ে আলাদা কীভাবে বা নতুন কিছু যুক্ত করা উচিত তা তাকে ব্যাখ্যা করা উচিত। ;।)
রাফিন

4
নিশ্চিত হয়ে নিন যে আপনি বুঝতে পেরেছেন যে এটি এই বিকল্পটিও খুঁজে পেতে পারে: <option> abcd </option>।
চার্লস

ধন্যবাদ এটি সুনির্দিষ্টভাবে সঠিক এবং প্রত্যেকে যা মিস করেছে তা .attr ('মান') যুক্ত করছে; অবশেষে. এটি একটি গতিশীল উপায়ে ব্যবহার করার জন্য আসলে মূল্য পাওয়ার সহজতম উপায়! সুতরাং সম্পূর্ণ কোড এটি পছন্দ করা উচিত। $("#testselect").find("option:contains('option-text')").attr('value'); সেভাবে আপনি কোনও ইভেন্টটি ব্যবহার করতে পারেন কোনও .click()সেটিং পরিবর্তন করতে চান ।
ChrisKsag

12

ড্রপডাউনলিস্টে নির্বাচিত পাঠ্যের জন্য এটি সেরা পদ্ধতি।

$("#dropdownid option:contains(your selected text)").attr('selected', true);

3
অনুরূপ উত্তরের মতো এটিও একটি বিকল্প খুঁজে পাবে this is your selected text plus more
তেপীম্ম

4

আমি ফায়ারফক্স এবং আইই উভয়টিতে কাজ করতে না পাওয়া পর্যন্ত আমি এই কয়েকটি জিনিস চেষ্টা করেছি। এটিই আমি নিয়ে এসেছি।

$("#my-Select").val($("#my-Select" + " option").filter(function() { return this.text == myText }).val());

এটি আরও পঠনযোগ্য ভাগে লেখার আর একটি উপায়:

var valofText = $("#my-Select" + " option").filter(function() {
    return this.text == myText
}).val();
$(ElementID).val(valofText);

সুডোকোড:

$("#my-Select").val( getValOfText( myText ) );

JQuery এর সর্বশেষতম সংস্করণগুলির সাথে
অর্থবোধ করে

কিসের কথা "#my-Select" + " option"? শুধু কেন নয় "#my-Select option"?
তেপীম্ম

3

নিম্নলিখিত ব্যবহার করুন

$('#select option:contains(ABC)').val();

1
আপনার প্রদত্ত কোডটি সমস্যার সমাধান করতে পারে তবে দয়া করে এটি কীভাবে সমস্যার সমাধান করে সে সম্পর্কে একটি সংক্ষিপ্ত বিবরণ যুক্ত করুন। স্ট্যাক ওভারফ্লোতে স্বাগতম, কীভাবে উত্তর দেওয়া যায় তা পড়ার প্রস্তাব দেওয়া হয়েছে ।
ড্যান বিউলিউ

3
যদি কিছু বিকল্প থাকে: এবিসি, এবিসিডি, এবিসিডিএফ, তবে?
হাঙ্গেন্ডভি

1

এটি jQuery 1.6 এ কাজ করবে (খোলার ব্র্যাকেটের আগে নোট কোলন), তবে নতুন প্রকাশে ব্যর্থ হয় (সেই সময়ে 1.10)।

$('#mySelect option:[text=abc]")

5
আকর্ষণীয় তবে দুর্ভাগ্যক্রমে এটি কাজ করে বলে মনে হচ্ছে না (jQuery 1.10.2)।
WynandB

আপনি এমন কিছু অন্তর্ভুক্ত করতে চাইবেন $("#mySelect option").filter(function() { return this.text == "abc"; });যা jQuery এর সর্বশেষতম সংস্করণগুলির সাথে কাজ করবে .. বা সম্ভবত আপনি অন্য কোনও উপায়ে ব্যবহার করতে পছন্দ করেন যা ..
ফ্র0zen ফায়ার

1

Jquery সংস্করণে 1.10.2 নীচে আমার জন্য কাজ করেছে

  var selectedText="YourMatchText";
    $('#YourDropdownId option').map(function () {
       if ($(this).text() == selectedText) return this;
      }).attr('selected', 'selected');
    });


0

এটি আমার পক্ষে কাজ করে:

var result = $('#SubjectID option')
            .filter(function () 
             { return $(this).html() == "English"; }).val();

resultপরিবর্তনশীল মিলেছে পাঠ্য মান সূচী ফিরে আসবে। এখন আমি এটির সূচকটি ব্যবহার করে এটি সেট করব:

$('#SubjectID').val(result);

-1

হয় আপনি বিকল্পগুলির মাধ্যমে পুনরাবৃত্তি করতে পারেন, বা বিকল্পটির অন্য কোনও বৈশিষ্ট্যের মধ্যে একই পাঠ্যটি রেখে সেইটি নির্বাচন করুন।


-1

এটিও কাজ করবে।

$ ('# পরীক্ষা')। সন্ধান করুন ("বিকল্প নির্বাচন করুন: ('বি')") ফিল্টার (": নির্বাচিত");


2
এটি অপশনটিও দখল করবে ABC
তেপীম্ম

-1

এই উত্তরে বর্ণিত হিসাবে , আপনি সহজেই হ্যাসটেক্সটের জন্য নিজস্ব নির্বাচক তৈরি করতে পারেন। এটি আপনাকে সাথে বিকল্পটি সন্ধান করতে দেয়$('#test').find('option:hastText("B")').val();

এখানে আমি যুক্ত করেছি হ্যাসটেক্সট পদ্ধতিটি:

 if( ! $.expr[':']['hasText'] ) {
     $.expr[':']['hasText'] = function( node, index, props ) {
       var retVal = false;
       // Verify single text child node with matching text
       if( node.nodeType == 1 && node.childNodes.length == 1 ) {
         var childNode = node.childNodes[0];
         retVal = childNode.nodeType == 3 && childNode.nodeValue === props[3];
       }
       return retVal;
     };
  }

-2

এটি আমার পক্ষে কাজ করে

var options = $(dropdown).find('option');
var targetOption = $(options).filter(
function () { return $(this).html() == value; });

console.log($(targetOption).val());

সব পোস্টের জন্য ধন্যবাদ।

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