Reputation: 19
I have 30 elements in my select drop-down list. But i need to restrict user to select only 10 of them. Once he selects 10 elements others should get disabled.How can i do this using java script??
Upvotes: 2
Views: 2001
Reputation: 6322
I created selected only 10 Value
example: http://jsfiddle.net/kevalbhatt18/yYW89/1468/
<select onchange="myFunction()" id="selectNumber">
<option >Choose a number</option>
</select>
<script>
var t = [];
function myFunction() {
var select = document.getElementById("selectNumber");
var selectedString = select.options[select.selectedIndex].value;
if (t.length < 10) {
t.push(selectedString)
} else {
return
}
console.log(t)
}
</script>
For drop Down filling
var select = document.getElementById("selectNumber");
var options = ["1", "2", "3", "4", "5","6","7","8","9","10","11"];
for(var i = 0; i < options.length; i++) {
var opt = options[i];
var el = document.createElement("option");
el.textContent = opt;
el.value = opt;
select.appendChild(el);
}
Upvotes: 0
Reputation: 98
JavaScript Solution
function checkSelected(el) {
var opts = document.getElementsByTagName("option");
var cnt = 0;
for (var i = 0; i < opts.length; i++) {
if (opts[i].selected == true) {
cnt++;
if (cnt > 10) {
opts[i].selected = false;
opts[i].disabled = true;
}
opts[i].disabled = false;
}
}
}
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<select multiple id="s" onchange="checkSelected(this);" style="height: 200px;width : 200px;">
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
<option>Option 4</option>
<option>Option 5</option>
<option>Option 6</option>
<option>Option 7</option>
<option>Option 8</option>
<option>Option 9</option>
<option>Option 10</option>
<option>Option 11</option>
<option>Option 12</option>
<option>Option 13</option>
<option>Option 14</option>
<option>Option 15</option>
<option>Option 16</option>
<option>Option 17</option>
<option>Option 18</option>
<option>Option 19</option>
<option>Option 20</option>
<option>Option 21</option>
<option>Option 22</option>
<option>Option 23</option>
<option>Option 24</option>
<option>Option 25</option>
<option>Option 26</option>
<option>Option 27</option>
<option>Option 28</option>
<option>Option 29</option>
<option>Option 30</option>
</select>
Upvotes: 0
Reputation: 4364
Use following jquery code
$(document).ready(function() {
var last_valid_selection = null;
$('#testbox').change(function(event) {
if ($(this).val().length > 10) {
alert('You can only choose 5!');
$(this).val(last_valid_selection);
} else {
last_valid_selection = $(this).val();
}
});
});
HTML is following
<select multiple id='testbox'>
<option value='1'>First Option</option>
<option value='2'>Second Option</option>
<option value='3'>Third Option</option>
<option value='4'>Fourth Option</option>
<option value='5'>Fifth Option</option>
<option value='6'>Sixth Option</option>
<option value='7'>Seventh Option</option>
<option value='8'>Eighth Option</option>
<option value='9'>Ninth Option</option>
<option value='10'>Tenth Option</option>
<option value='11'>First Option</option>
<option value='12'>Second Option</option>
<option value='13'>Third Option</option>
<option value='14'>Fourth Option</option>
<option value='15'>Fifth Option</option>
<option value='16'>Sixth Option</option>
<option value='17'>Seventh Option</option>
<option value='18'>Eighth Option</option>
<option value='19'>Ninth Option</option>
<option value='20'>Tenth Option</option>
<option value='21'>First Option</option>
<option value='22'>Second Option</option>
<option value='23'>Third Option</option>
<option value='24'>Fourth Option</option>
<option value='25'>Fifth Option</option>
<option value='26'>Sixth Option</option>
<option value='27'>Seventh Option</option>
<option value='28'>Eighth Option</option>
<option value='29'>Ninth Option</option>
<option value='30'>Tenth Option</option>
</select>
The above code is from here How do you limit options selected in a html select box?
Upvotes: 2