জাভাস্ক্রিপ্ট / jQuery: একাধিক নির্বাচন মান সেট (নির্বাচন)


101

আমার একাধিক নির্বাচন রয়েছে:

<select name='strings' id="strings" multiple style="width:100px;">
    <option value="Test">Test</option>
    <option value="Prof">Prof</option>
    <option value="Live">Live</option>
    <option value="Off">Off</option>
    <option value="On">On</option>
</select>

আমি আমার ডাটাবেস থেকে ডেটা লোড করি। তারপরে আমার মতো স্ট্রিং রয়েছে:

var values="Test,Prof,Off";

আমি কীভাবে একাধিক নির্বাচনে এই মানগুলি সেট করতে পারি? ইতিমধ্যে একটি অ্যারেতে স্ট্রিংটি পরিবর্তন করার চেষ্টা করেছে এবং একাধিকের মধ্যে এটি মান হিসাবে রেখে দিয়েছে, তবে কাজ করে না ...! কেউ আমাকে এই সাহায্য করতে পারেন? ধন্যবাদ !!!

উত্তর:


134

গতিশীল নির্বাচকের মানটি ব্যবহার করে লুপের মাধ্যমে বিশিষ্ট নির্বাচককে কাজে লাগান।

var values="Test,Prof,Off";
$.each(values.split(","), function(i,e){
    $("#strings option[value='" + e + "']").prop("selected", true);
});

কাজের উদাহরণ http://jsfiddle.net/McddQ/1/


4
এটি দুর্দান্ত, তবে আপনি কীভাবে বলবেন যে নির্বাচিত ভ্ল্যাজগুলি আইডি = স্ট্রিং দিয়ে "একাধিক নির্বাচন" তে নির্বাচন করা উচিত?
Zwen2012

@ ব্যবহারকারী 1824136 দুর্দান্ত, খুশী আমি আজ সকালে কাউকে সাহায্য করতে পারি!
কেভিন বোয়ারক্সক্স

4
যদি আমরা যাইহোক jQuery এর উপর নির্ভর করতে চলেছি তবে অনেকটা ŁukaszW.pl পছন্দ করে $('#strings').val(values.split(','))। JQuery ব্যতীত, asukaszW.pl এর সমতল পুরাতন জাভাস্ক্রিপ্ট document.getElementById('strings').value = ["Test", "Prof", "Off"]ওয়ান-লাইনারে সাফল্য অর্জন করেছে
কাইলমিট

112

jQuery এ:

$("#strings").val(["Test", "Prof", "Off"]);

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

var element = document.getElementById('strings');
var values = ["Test", "Prof", "Off"];
for (var i = 0; i < element.options.length; i++) {
    element.options[i].selected = values.indexOf(element.options[i].value) >= 0;
}

jQuery এখানে উল্লেখযোগ্য বিমূর্ততা করে।


4
এটি আমার এবং আমার 'নির্বাচিত' বাছাইয়ের জন্য নিখুঁতভাবে কাজ করেছে ... একবারে সমস্ত মান যুক্ত করতে হবে (ঠিক যেমন আপনি উপরে বলেছেন)
টড ভ্যানস

4
হুঁ, খাঁটি জাভাস্ক্রিপ্ট আমার জন্য ক্রোম / ম্যাক বা এফএফ / ম্যাকের জন্য কাজ করছে না। আসলে যা নির্বাচিত হয়েছে তার কোনও প্রভাব নেই, কমপক্ষে ব্রাউজারে দৃশ্যত নির্বাচিত কী প্রদর্শিত হয়।
বিল কিজ

4
আমি যখন স্ট্রিং পাস করছি তখন এটি কাজ করছে, তবে যখন আমি অ্যারে পাস করছি তখন তা নয়।
রবি জি

একই সমস্যা থাকা; এটি কেবল স্ট্রিং মানগুলির সাথে কাজ করে, অ্যারে নয় (প্লেইন জেএস ব্যবহার করে, জিকুয়েরি নয়)।
জয়প

4
যাঁরা এতে সমস্যায় পড়েছেন তাদের পক্ষে আপনার জাভাস্ক্রিপ্টে মান সেট করার পরে 'পরিবর্তন' ইভেন্টটি ট্রিগার করা উচিত তা নিশ্চিত করা উচিত। JQuery ব্যবহার করা হবে এটি $ ("# স্ট্রিং") val ভাল (["টেস্ট", "অধ্যাপক", "অফ"]) trigger
জন ওয়াইট

21

মানগুলির একটি অ্যারে সহ কেবল jQuery ভাল ফাংশন সরবরাহ করুন:

var values = "Test,Prof,Off";
$('#strings').val(values.split(','));

এবং একই বিন্যাসে নির্বাচিত মানগুলি পেতে:

values = $('#strings').val();

8

খাঁটি জাভাস্ক্রিপ্ট ES6 সমাধান

  • একটি querySelectorAllফাংশন সহ প্রতিটি বিকল্প ধরুন এবং valuesস্ট্রিংটি বিভক্ত করুন ।
  • Array#forEachথেকে প্রতিটি উপাদানকে পুনরাবৃত্তি করতে ব্যবহার করুনvaluesঅ্যারে ।
  • Array#findপ্রদত্ত মানের সাথে মিলের বিকল্পটি খুঁজে পেতে ব্যবহার করুন ।
  • এর selectedবৈশিষ্ট্যটি সেট করুন true

দ্রষ্টব্য : Array#fromএকটি অ্যারের মতো বস্তুটিকে একটি অ্যারে রূপান্তরিত করে এবং তারপরে আপনি Array.prototypeএটিতে ফাংশন ব্যবহার করতে সক্ষম হবেন যেমন সন্ধান বা মানচিত্র

var values = "Test,Prof,Off",
    options = Array.from(document.querySelectorAll('#strings option'));

values.split(',').forEach(function(v) {
  options.find(c => c.value == v).selected = true;
});
<select name='strings' id="strings" multiple style="width:100px;">
    <option value="Test">Test</option>
    <option value="Prof">Prof</option>
    <option value="Live">Live</option>
    <option value="Off">Off</option>
    <option value="On">On</option>
</select>


2

মূলত একটি values.split(',')এবং তারপরে ফলাফলের অ্যারের মধ্য দিয়ে লুপ করুন এবং নির্বাচন করুন সেট করুন।


1

খাঁটি জাভাস্ক্রিপ্ট ES5 সমাধান

কিছু কারণে আপনি jQuery বা ES6 ব্যবহার করেন না? এটি আপনাকে সাহায্য করতে পারে:

var values = "Test,Prof,Off";
var splitValues = values.split(',');
var multi = document.getElementById('strings');

multi.value = null; // Reset pre-selected options (just in case)
var multiLen = multi.options.length;
for (var i = 0; i < multiLen; i++) {
  if (splitValues.indexOf(multi.options[i].value) >= 0) {
    multi.options[i].selected = true;
  }
}
<select name='strings' id="strings" multiple style="width:100px;">
    <option value="Test">Test</option>
    <option value="Prof">Prof</option>
    <option value="Live">Live</option>
    <option value="Off">Off</option>
    <option value="On" selected>On</option>
</select>


0
var groups = ["Test", "Prof","Off"];

    $('#fruits option').filter(function() {
      return groups.indexOf($(this).text()) > -1; //Options text exists in array
    }).prop('selected', true); //Set selected

0

প্রতিস্থাপনের জন্য কিছু উত্তরে এটি ত্রুটি

var mystring = "this|is|a|test";
mystring = mystring.replace(/|/g, "");
alert(mystring);

এই সংশোধন সঠিক তবে | শেষ পর্যন্ত এটি দেখতে should |

var mystring = "this|is|a|test";
mystring = mystring.replace(/\|/g, "");
alert(mystring);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.