jQuery অ্যারে চেকড চেকবাক্সগুলির মান পান


129

আমি বর্তমানে যাচাই করা সমস্ত চেকবাক্সের মান পাওয়ার চেষ্টা করছি এবং সেগুলিকে একটি অ্যারেতে সঞ্চয় করছি। এই পর্যন্ত আমার কোড এখানে:

 $("#merge_button").click(function(event){
    event.preventDefault();
    var searchIDs = $("#find-table input:checkbox:checked").map(function(){
      return $(this).val();
    });
    console.log(searchIDs);
  });

তবে এটি আমার প্রয়োজনের চেয়ে বেশি ফলাফল করে। আমি কেবল মানগুলিই পাই না তবে কিছু অন্যান্য জিনিসও আমি চাই না।

["51729b62c9f2673e4c000004", "517299e7c9f26782a7000003", "51729975c9f267f3b5000002", prevObject: jQuery.fn.jQuery.init [3], প্রসঙ্গ: নথি, jquery: "1.9.1", আরম্ভ

আমি কেবল আইডির (এই ক্ষেত্রে প্রথম 3 টি আইটেম) চাই।

$.eachঅ্যারেতে মানগুলি ব্যবহার করে এবং ঠেলে দিয়ে আমি পছন্দসই আউটপুট পাই:

$("#find-table input:checkbox:checked").each(function(){ myArray.push($(this).val()); })

["51729b62c9f2673e4c000004", "517299e7c9f26782a7000003", "51729975c9f267f3b5000002"]

তবে আমি ব্যবহার করতে চাই $.map, যেহেতু এটি আমাকে কোডের একটি লাইন সংরক্ষণ করে এবং সুন্দর করে তোলে।

ধন্যবাদ

উত্তর:


261

.get()ফলস্বরূপ jQuery অবজেক্টটিকে একটি সত্য অ্যারে রূপান্তর করতে একেবারে শেষে কল করুন ।

$("#merge_button").click(function(event){
    event.preventDefault();
    var searchIDs = $("#find-table input:checkbox:checked").map(function(){
      return $(this).val();
    }).get(); // <----
    console.log(searchIDs);
});

প্রতি ডকুমেন্টেশন :

যেহেতু রিটার্ন মান একটি jQuery অবজেক্ট, যার মধ্যে একটি অ্যারে থাকে, ফলাফল হিসাবে একটি বেসিক অ্যারে নিয়ে কাজ করার জন্য .get () কল করা খুব সাধারণ।


1
আমি সত্যিকারের অ্যারের কাছ থেকে প্রত্যাশা করছিলাম $.map। সমাধানের জন্য ধন্যবাদ, এটি কাজ করে।
যদি __ নাম__

আপনাকে ধন্যবাদ মা টিকিটসেনারের জন্য আমার এটি দরকার
স্টিভেন

2
জিনিস আমি এই সম্পর্কে পাবেন না কেন .get(), প্রয়োজন হয় যখন ফাংশন ফিরে আসছে .val()jQuery এর সংগ্রহে প্রতিটি আইটেমের থেকে। এটি কি কারণ mapএটি এটিকে পাস করার আগে এটি jQuery অবজেক্টে ফিরিয়ে দেয় searchIDs?
আইকনোক্লাস্ট

আমরা অ্যারে টাইপ হিসাবে মান পেতে পারি?
krutssss

22

ডেমো: http://jsfiddle.net/PBhHK/

$(document).ready(function(){

    var searchIDs = $('input:checked').map(function(){

      return $(this).val();

    });
    console.log(searchIDs.get());

});

শুধু get () কল করুন এবং স্প্রেতে যেমন লেখা আছে তেমন আপনার অ্যারে থাকবে: http://api.jquery.com/map/

$(':checkbox').map(function() {
      return this.id;
    }).get().join();

18

.toArray()আপনার .map()ফাংশনটির শেষে আপনাকে যুক্ত করতে হবে

$("#merge_button").click(function(event){
    event.preventDefault();
    var searchIDs = $("#find-table input:checkbox:checked").map(function(){
        return $(this).val();
    }).toArray();
    console.log(searchIDs);
});

ডেমো: http://jsfiddle.net/sZQtL/


10

আমি আপনার কোডটি কিছুটা রিফ্যাক্ট করেছিলাম এবং বিশ্বাস করি যে আমি যে সমাধানটির জন্য সন্ধান করছিলাম তা নিয়ে এসেছি। মূলত I searchIDsএর ফলাফল হিসাবে সেট করার পরিবর্তে .map()আমি কেবল মানগুলিকে একটি অ্যারেতে ঠেলে দিয়েছি।

$("#merge_button").click(function(event){
  event.preventDefault();

  var searchIDs = [];

  $("#find-table input:checkbox:checked").map(function(){
    searchIDs.push($(this).val());
  });

  console.log(searchIDs);
});

কোড চালানোর সাথে সাথে আমি একটি ফিডাল তৈরি করেছি ।



1

জাভাস্ক্রিপ্ট অবজেক্টে একটি অ্যারে হিসাবে এইচটিএমএল নামক ফর্ম উপাদানগুলির প্রয়োজন, যেন ফর্মটি আসলে জমা দেওয়া হয়েছিল।

যদি একাধিক চেকবক্সগুলির সাথে কোনও ফর্ম থাকে তবে:

<input name='breath[0]' type='checkbox' value='presence0'/>
<input name='breath[1]' type='checkbox' value='presence1'/>
<input name='breath[2]' type='checkbox' value='presence2'/>
<input name='serenity'  type='text' value='Is within the breath.'/>
...

ফলাফলটি এর সাথে একটি বস্তু:

data = {
   'breath':['presence0','presence1','presence2'],
   'serenity':'Is within the breath.'
}


var $form = $(this),
    data  = {};

$form.find("input").map(function()
{
    var $el  = $(this),
        name = $el.attr("name");

    if (/radio|checkbox/i.test($el.attr('type')) && !$el.prop('checked'))return;

    if(name.indexOf('[') > -1)
    {
        var name_ar = name.split(']').join('').split('['),
            name    = name_ar[0],
            index   = name_ar[1];

        data[name]  = data[name] || [];
        data[name][index] = $el.val();
    }
    else data[name] = $el.val();
});

এবং এখানে অনেকগুলি উত্তর রয়েছে যা আমার কোডটি উন্নত করতে সহায়তা করেছিল, তবে সেগুলি হয় খুব জটিল ছিল বা ঠিক আমি চাইছিলাম না: ফর্ম ডেটাটিকে জাভাস্ক্রিপ্ট অবজেক্টে jQuery এর সাথে রূপান্তর করুন

কাজ করে তবে উন্নত করা যায়: কেবলমাত্র এক-মাত্রিক অ্যারেগুলিতে কাজ করে ফলাফল ফলাফলগুলি সূচকগুলি নাও হতে পারে। একটি অ্যারের দৈর্ঘ্যের বৈশিষ্ট্য পরবর্তী সূচী সংখ্যাটি অ্যারের দৈর্ঘ্য হিসাবে দেয়, প্রকৃত দৈর্ঘ্য নয়।

আশা করি এটি সাহায্য করেছে। নমস্তে!



0

"প্রতিটি" ব্যবহার করবেন না। এটি একই উপাদানগুলির ক্রিয়াকলাপ এবং পরিবর্তনের জন্য ব্যবহৃত হয়। উপাদানটির শরীর থেকে ডেটা বের করতে এবং অন্য কোথাও ব্যবহার করতে "মানচিত্র" ব্যবহার করুন।


JQuery ডক্সের বেশিরভাগ কিছুর জন্য দুর্দান্ত উদাহরণ রয়েছে, যার মধ্যে রয়েছেmap
জিংস্টেস্টুলা

0

এখানে পৃষ্ঠাগুলিতে চেকবাক্সগুলির শ্রেণিবদ্ধ এবং ভেরগুলি এটিকে একটি অ্যারে সংগ্রহের অনুমতি দেয় এবং আপনি লুপের জন্য পরীক্ষিত সত্যটি পরীক্ষা করতে পারেন তারপরে স্বতন্ত্রভাবে পছন্দসই অপারেশন সম্পাদন করতে পারেন। এখানে আমি কাস্টম বৈধতা সেট করেছি। আমি মনে করি এটি আপনার সমস্যার সমাধান করবে।

  $(".allows").click(function(){
   var allows = document.getElementsByClassName('allows');
   var chkd   = 0;  
   for(var i=0;i<allows.length;i++)
   {
       if(allows[i].checked===true)
       {
           chkd = 1;
       }else
       {

       }
   }

   if(chkd===0)
   {
       $(".allows").prop("required",true);
       for(var i=0;i<allows.length;i++)
        {
        allows[i].setCustomValidity("Please select atleast one option");
        }

   }else
   {
       $(".allows").prop("required",false);
       for(var i=0;i<allows.length;i++)
        {
        allows[i].setCustomValidity("");
        }
   }

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