Infinity
Infinity

Reputation: 1325

Counting no. of dropdownlists inside a div

<div id="myDiv">    
    <select id="ddl1" name="31">
        <option value="1">One</option>
        <option value="2">Two</option>
        <option value="3" selected="selected">Three</option>
    </select>

    <select id="ddl2" name=32>
        <option value="1">A</option>
        <option value="2" selected="selected">B</option>
        <option value="3">C</option>
    </select>    
</div>

Thats my div. The number of dropdowns inside this div vary. What I want is this in a string:-

31,3||32,2

The above is name attribute value of dropdowns, 2nd number after comma is the "value" of the selected option and values of both dropdownlists are separated by pipe symbol. The dropdowns can be 3 and 4 in number too. How can I acheive this in jquery?

Upvotes: 0

Views: 747

Answers (4)

Samir Adel
Samir Adel

Reputation: 2499

    var val = "";
    $("select").each(function(){
        val += $(this).attr("name") + "," + $("option:selected",this).val()+ "||";
    })
if(val != "")
val = val.substring(0, val.length - 2);
        console.log(val);

Upvotes: 0

Rich O&#39;Kelly
Rich O&#39;Kelly

Reputation: 41757

Try the following:

var values = [];
$('#myDiv select').each(function() {
  values.push($(this).attr('name') + ',' + $(this).val());
});
var result = values.join('||');

Upvotes: 1

nnnnnn
nnnnnn

Reputation: 150030

A little something like this:

var selects = [];
$("#myDiv select").each(function() {
    selects.push(this.name + "," + $(this).val());
});
var output = selects.join("||");

Where the .each() method is used to iterate through all the select elements and push their name and current value into the selects array, then the array .join() method is used to turn the array into a string using "||" as the separator.

Upvotes: 4

Fabrizio Calderan
Fabrizio Calderan

Reputation: 123377

try this snippet:

var output = [];
$('#myDiv select').each(function() {
   output.push([this.name, $(this).val()].join(','));
});

console.log(output.join('||'));

Upvotes: 2

Related Questions