JQuery ব্যবহার করে কোনও নির্বাচনের সমস্ত বিকল্প কীভাবে পাবেন?


406

আমি কীভাবে আইকিউ পাস করে jQuery এর মাধ্যমে একটি নির্বাচনের সমস্ত বিকল্প পেতে পারি?

আমি কেবল তাদের মানগুলি পেতে চাইছি, পাঠ্যটি নয়।

উত্তর:


612

ব্যবহার করুন:

$("#id option").each(function()
{
    // Add $(this).val() to your list
});

.এচ () | jQuery এপিআই ডকুমেন্টেশন


63
জাভাস্ক্রিপ্ট অপারেশনগুলির কোনওটির জন্যই jQuery এর প্রয়োজন নেই। জেএসকিরি জেএস অপারেশনগুলিকে সহজ করার জন্য পছন্দের বিষয়।
রুটার

8
আপনি এটিও করতে পারেন: $ ("# আইডি বিকল্প") each
কোফিফুস

3
$.mapঅনেক বেশি মার্জিত এবং কম ত্রুটিযুক্ত প্রবণ (নীচে দেখুন)।
ইলিয়ট ক্যামেরন

1
$('#id option').map((index, option) => option.value): "ভ্যানিলা" জেএস mapফাংশনের তুলনায় কলব্যাক স্বাক্ষরটি কীভাবে বিপরীত হয়েছে তা নোট করুন ( (item, index) =>)
imrok

168

আমি jQuery জানি না, তবে আমি জানি যে আপনি যদি নির্বাচিত উপাদানটি পান তবে এতে একটি 'অপশন' অবজেক্ট থাকে।

var myOpts = document.getElementById('yourselect').options;
alert(myOpts[0].value) //=> Value of the first option

74
+1 টি। ইতিমধ্যে প্লেইন ওল্ড ডিওমে অন্তর্নিহিত বেশ দক্ষ বাস্তবায়ন রয়েছে এমন জিনিসের জন্য jQuery এর জটিল নির্বাচক যাদুটির অবলম্বন করবেন না।
ববিনস

19
না কেন, @ ববিস? আপনি যদি বেশিরভাগ jQuery ব্যবহার করেন তবে এটি কম কোডের সাথে লেখার জন্য উভয়ই তাত্পর্যপূর্ণ এবং চেষ্টা করার দরকার নেই এবং আপনার এই উদাহরণে নিয়মিত জাভাস্ক্রিপ্টে স্যুইচ করা উচিত কিনা তা খুঁজে বের করার জন্য দ্রুত। এবং আপনার কোড আরও সুসংগত।
অ্যান্ড্রু

139

$.map এটি সম্ভবত সবচেয়ে দক্ষ উপায়।

var options = $('#selectBox option');

var values = $.map(options ,function(option) {
    return option.value;
});

আপনি $('#selectBox option:selected')যদি কেবলমাত্র নির্বাচিতগুলি চান তবে আপনি পরিবর্তন বিকল্পগুলি যুক্ত করতে পারেন।

প্রথম লাইনটি সমস্ত চেকবাক্স নির্বাচন করে এবং তাদের jQuery উপাদানকে একটি পরিবর্তনশীল হিসাবে রাখে। তারপরে আমরা .mapসেই ভেরিয়েবলের প্রতিটি উপাদানগুলিতে একটি ফাংশন প্রয়োগ করতে jQuery এর ফাংশনটি ব্যবহার করি ; আমরা যা করছি তা প্রতিটি উপাদানটির মান ফিরিয়ে দিচ্ছে যা আমাদের যত্নশীল। কারণ আমরা তাদের মানচিত্রের ফাংশনের অভ্যন্তরে ফিরিয়ে দিচ্ছি এটি অনুরোধ অনুসারে প্রকৃতপক্ষে মানগুলির একটি অ্যারে তৈরি করে।


3
এটি সর্বাধিক মার্জিত সমাধান আইএমও। মানচিত্র একটি খুব শক্তিশালী নির্মাণ যা এই পরিস্থিতিতে ঠিক ফিট করে।
হেজারড

1
আমি আপনার সমাধানটি সত্যিই পছন্দ করি - এটি সেই পদ্ধতির সাথে আমি গিয়েছিলাম। তবে, আপনি যদি নির্বাচিত মানগুলি চান তবে এটি আরও তুচ্ছ: $('#selectBox').val()নির্বাচিত মানগুলির একটি অ্যারে প্রদান করবে।
হিস্টেমাচাইন

হাই, @PCasagrande আমার একটি কাস্টম অ্যাট্রিবিউট নাম 'ডেটা-টাইপ' রয়েছে। আপনার সমাধানটি ব্যবহার করে আমি এর মান কীভাবে পেতে পারি? আমি যা করছি তা হচ্ছে 'অপশন.ডাটা-টাইপ', তবে এটি আমাকে এনএন দিচ্ছে। আগাম ধন্যবাদ.
মে_ডিভোপার

হাই, @ পি.সি.এস.গ্রাঞ্জে '$ (বিকল্প, এটি) .attr ("ডেটা-টাইপ")' 'করে আমার যা প্রয়োজন তা পেয়েছি। তবে আপনার যদি আরও ভাল কিছু থাকে তবে আমাকে জানান। ধন্যবাদ। :)
মে_ডিভোপার

আমি মনে করি আপনি কেবল 'রিটার্ন অপশন.আউটআর ("ডেটা-টাইপ") করতে পারেন;' মানচিত্রে। এটি আপনাকে ডেটা-টাইপের মানগুলির একটি অ্যারে দেয়।
পিসিএসগ্র্যান্ডে

74

কিছু উত্তর ব্যবহার করে each, তবে mapএখানে আইএমএইচও আরও ভাল বিকল্প:

$("select#example option").map(function() {return $(this).val();}).get();

mapJQuery এ (কমপক্ষে) দুটি ফাংশন রয়েছে। টমাস পিটারসনের উত্তরে "ইউটিলিটিস / জেকিউয়ারি.ম্যাপ" ব্যবহার করা হয়েছে; এই উত্তরটিতে "ট্র্যাভার্সিং / ম্যাপ" ব্যবহার করা হয়েছে (এবং সেজন্য একটি সামান্য ক্লিনার কোড)।

এটি মানগুলির সাথে আপনি কী করতে যাচ্ছেন তার উপর নির্ভর করে। যদি আপনি, ধরুন, কোনও ফাংশন থেকে মানগুলি ফিরিয়ে আনতে চান mapতবে সম্ভবত এটিই আরও ভাল বিকল্প। আপনি যদি মানগুলি সরাসরি ব্যবহার করতে চান তবে আপনি সম্ভবত চান each


4
আপনি এখানে। (এই) .ভাল () এর পরিবর্তে এই.ভ্যালুটি ব্যবহার করতে পারেন। প্রাথমিক বাছাইকারীদের (# উদাহরণ বিকল্প) বাচ্চাদের সন্ধানের মাধ্যমে আপনি আরও ভাল পরিবেশিত হতে চাই। (যদিও) শেষে খুব শক্ত।
অ্যালেক্স ব্যারেট

1
@ অ্যালেক্স ব্যারেট: আচ্ছা, jQuery মোটেও ব্যবহার না করেই এই সমস্যাটি সমাধান করা সম্ভব। উপাদানটিকে আর্গুমেন্ট হিসাবে কল করা jQueryটিকে কেবল একটি jQuery অবজেক্টে আবৃত করবে (অর্থাত কোনও বৃক্ষের পথ পাবে না, অর্থাত্ ব্যয়বহুল নয়)। সুতরাং সম্ভবত একটি মাইক্রো-অপ্টিমাইজেশন হিসাবে, হ্যাঁ।
cic

মানচিত্র FTW। এটি ঠিক কীভাবে করা উচিত। শেষের দিকে () পাওয়া অপ্রয়োজনীয় বলে মনে হয়, তবে (এটি ডিওএম নোডটি দেয় এবং ভাল () ইতিমধ্যে আমাদের একটি স্ট্রিং দেয়, তাই ...?) Var opts = $ ('# সেমি_আম্ট বিকল্প')। মানচিত্র (ফাংশন ( ) {রিটার্ন পার্সিয়ান্ট ($ (এটি) .ভাল ());});

3
@ এসবিয়াম: "যেহেতু রিটার্ন মান একটি jQuery- মোড়ানো অ্যারে, তাই get()বেসিক অ্যারে দিয়ে কাজ করা প্রত্যাবর্তিত বস্তুর পক্ষে খুব সাধারণ " " - api.jquery.com/map
cic

এটি আমাকে খুব সাহায্য করেছিল, আমি পাঠ্যের মানটি চেয়েছিলাম না, তাই আমি কেবল text()পরিবর্তে পরিবর্তিত হয়েছি val()। ধন্যবাদ ! (আমি আপনাকে 1000 এরও বেশি করে দিতে ;->
পেরেছি

52
$('select#id').find('option').each(function() {
    alert($(this).val());
});

1
এটি টিকিট, কারণ আমি নির্বাচকটি ব্যবহার না করে ডিগ্রিমে ভেরিয়েবলগুলিতে উপাদানগুলি ক্যাশে করতে চাই।
ডগ দাড়ি 15

1
এছাড়াও this (এটি) (যা যা সন্ধান করছিল) এর সাথে কাজ করে উদাহরণস্বরূপ
হিউ

16
$("#id option").each(function()
{
    $(this).prop('selected', true);
});

যদিও, সঠিক উপায়টি হ'ল উপাদানটির ডোম সম্পত্তি সেট করা, যেমন:

$("#id option").each(function(){
    $(this).attr('selected', true);
});

4
এটি .attr ('নির্বাচিত', 'নির্বাচিত') হবে না?
v010dya

16

এটি আপনার #myselectboxজন্য একটি ভাল পরিষ্কার অ্যারের বিকল্পগুলির মানগুলি রাখবে :

// First, get the elements into a list
var domelts = $('#myselectbox option');

// Next, translate that into an array of just the values
var values = $.map(domelts, function(elt, i) { return $(elt).val();});

আপনি এটিকে সংক্ষিপ্ত করতে পারেন:$.map(domelts, elt=> $(elt).val())
Jonno_FTW

11

আপনি আপনার সমস্ত "নির্বাচিত মান" চেকবক্সগুলির নামে নিতে পারেন এবং সেগুলি "," দ্বারা পৃথক স্টিংয়ে উপস্থাপন করতে পারেন।

এটি করার একটি দুর্দান্ত উপায় হল jQuery এর ma। ম্যাপ () ব্যবহার করা:

var selected_val = $.map($("input[name='d_name']:checked"), function(a)
    {
        return a.value;
    }).join(',');

alert(selected_val);

6
এই কোডটি বেশ অপঠনযোগ্য, আমি এটাকে কখনোই ব্যবহার করব না যদিও এর কান্ডা শীতল হয়।

7
এর পাশাপাশি এ প্রশ্নও সম্পর্কে selectএবং optionনা চেকবাক্সগুলি।
ডেমেন্টিক


3

আপনি তার জন্য নিম্নলিখিত কোডগুলি ব্যবহার করতে পারেন:

var assignedRoleId = new Array();
$('#RolesListAssigned option').each(function(){
    assignedRoleId.push(this.value);
});

2

মাল্টিলেক্ট বিকল্পের জন্য:

$('#test').val()নির্বাচিত মানগুলির তালিকা প্রদান করে। $('#test option').lengthবিকল্পগুলির মোট সংখ্যা প্রদান করে (উভয় নির্বাচিত এবং নির্বাচিত নয়)


1

এটি jQuery সহ একটি সাধারণ স্ক্রিপ্ট:

var items = $("#IDSELECT > option").map(function() {
    var opt = {};
    opt[$(this).val()] = $(this).text();
    return opt;
}).get();
var selectvalues = [];

for(var i = 0; i < items.length; i++) {
    for(key in items[i]) {


        var id = key;
        var text = items[i][key];

        item = {}
        item ["id"] = id;
        item ["text"] = text;

        selectvalues.push(item);

    }
}
console.log(selectvalues);
copy(selectvalues);
<select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>

1

নির্বাচিত আইটেমের সমস্ত মান, পাঠ্য বা মান, বা নির্বাচিত আইটেমের পাঠ্য পেতে এখানে jquery এ একটি সাধারণ উদাহরণ

$('#nCS1 > option').each((index, obj) => {
   console.log($(obj).val());
})

printOptionValues = () => {

  $('#nCS1 > option').each((index, obj) => {
    console.log($(obj).val());
  })

}

printOptionTexts = () => {
  $('#nCS1 > option').each((index, obj) => {
    console.log($(obj).text());
  })
}

printSelectedItemText = () => {
  console.log($('#nCS1 option:selected').text());
}

printSelectedItemValue = () => {
  console.log($('#nCS1 option:selected').val());
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select size="1" id="nCS1" name="nCS1" class="form-control" >
					<option value="22">Australia</option>
          <option value="23">Brunei</option>
          <option value="33">Cambodia</option>
          <option value="32">Canada</option>
          <option value="27">Dubai</option>
          <option value="28">Indonesia</option>
          <option value="25">Malaysia</option>				
</select>
<br/>
<input type='button' onclick='printOptionValues()' value='print option values' />
<br/>
<input type='button' onclick='printOptionTexts()' value='print option texts' />
<br/>
<input type='button' onclick='printSelectedItemText()' value='print selected option text'/>
<br/>
<input type='button' onclick='printSelectedItemValue()' value='print selected option value' />



0

আপনি যদি কিছু নির্বাচিত পাঠ্য সহ সমস্ত বিকল্প খুঁজছেন তবে নীচের কোডটি কার্যকর হবে।

$('#test').find("select option:contains('B')").filter(":selected");

0

ছোট উপায়

$(() => {
$('#myselect option').each((index, data) => {
    console.log(data.attributes.value.value)
})})

অথবা

export function GetSelectValues(id) {
const mData = document.getElementById(id);
let arry = [];
for (let index = 0; index < mData.children.length; index++) {
    arry.push(mData.children[index].value);
}
return arry;}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.