'How to check if an option is selected?
$('#mySelectBox option').each(function() {
if ($(this).isChecked())
alert('this option is selected');
else
alert('this is not');
});
Apparently, the isChecked doesn't work. SO my question is what is the proper way to do this?
Thanks.
Solution 1:[1]
You can get the selected option this way:
$('#mySelectBox option:selected')...
But if you want to iterate all the options, do it with this.selected instead of this.isChecked which doesn't exist:
$('#mySelectBox option').each(function() {
if (this.selected)
alert('this option is selected');
else
alert('this is not');
});
Update:
You got plenty of answers suggesting you to use this:
$(this).is(':selected') well, it can be done a lot faster and easier with this.selected so why should you use it and not the native DOM element method?!
Read Know Your DOM Properties and Functions in the jQuery tag info
Solution 2:[2]
You can use this way by jquery :
$(document).ready(function(){
$('#panel_master_user_job').change(function () {
var job = $('#panel_master_user_job').val();
alert(job);
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="job" id="panel_master_user_job" class="form-control">
<option value="master">Master</option>
<option value="user">User</option>
<option value="admin">Admin</option>
<option value="custom">Custom</option>
</select>
Solution 3:[3]
If you're not familiar or comfortable with is(), you could just check the value of prop("selected").
$('#mySelectBox option').each(function() {
if ($(this).prop("selected") == true) {
// do something
} else {
// do something
}
});?
Edit:
As @gdoron pointed out in the comments, the faster and most appropriate way to access the selected property of an option is via the DOM selector. Here is the fiddle update displaying this action.
if (this.selected == true) {
appears to work just as well! Thanks gdoron.
Solution 4:[4]
use
$("#mySelectBox option:selected");
to test if its a particular option myoption:
if($("#mySelectBox option:selected").text() == myoption){
//...
}
Solution 5:[5]
Consider this as your select list:
<select onchange="var optionVal = $(this).find(':selected').val(); doSomething(optionVal)">
<option value="mostSeen">Most Seen</option>
<option value="newst">Newest</option>
<option value="mostSell">Most Sell</option>
<option value="mostCheap">Most Cheap</option>
<option value="mostExpensive">Most Expensive</option>
</select>
then you check selected option like this:
function doSomething(param) {
if ($(param.selected)) {
alert(param + ' is selected!');
}
}
Solution 6:[6]
If you need to check option selected state for specific value:
$('#selectorId option[value=YOUR_VALUE]:selected')
Solution 7:[7]
In my case I don't know why selected is always true. So the only way I was able to think up is:
var optionSelected = false;
$( '#select_element option' ).each( function( i, el ) {
var optionHTMLStr = el.outerHTML;
if ( optionHTMLStr.indexOf( 'selected' ) > 0 ) {
optionSelected = true;
return false;
}
});
Solution 8:[8]
If you only want to check if an option is selected, then you do not need to iterate through all options. Just do
if($('#mySelectBox').val()){
// do something
} else {
// do something else
}
Note: If you have an option with value=0 that you want to be selectable, you need to change the if-condition to $('#mySelectBox').val() != null
Solution 9:[9]
If you want to check selected option through javascript
Simplest method is add onchange attribute in that tag and define a function in js file see example if your html file has options something like this
<select onchange="subjects(this.value)">
<option>Select subject</option>
<option value="Computer science">Computer science</option>
<option value="Information Technolgy">Information Technolgy</option>
<option value="Electronic Engineering">Electronic Engineering</option>
<option value="Electrical Engineering">Electrical Engineering</option>
</select>
And now add function in js file
function subjects(str){
console.log(`selected option is ${str}`);
}
If you want to check selected option in php file
Simply give name attribute in your tag and access it php file global variables /array ($_GET or $_POST) see example if your html file is something like this
<form action="validation.php" method="POST">
Subject:<br>
<select name="subject">
<option>Select subject</option>
<option value="Computer science">Computer science</option>
<option value="Information Technolgy">Information Technolgy</option>
<option value="Electronic Engineering">Electronic Engineering</option>
<option value="Electrical Engineering">Electrical Engineering</option>
</select><br>
</form>
And in your php file validation.php you can access like this
$subject = $_POST['subject'];
echo "selected option is $subject";
Solution 10:[10]
var selectedOption = $("option:selected", #selectIdentifier)
<select id="selectIdentifier">
<option>1</option>
<option>2</option>
<option selected="selected">3</option>
</select>
EDIT: This answer is valid and avoids the religious wars of jQuery or not. The key in this answer is :selected. To answer the actual question the OP needs to have created some differentiation between options to be able to query weather a specific option is selected. eg id, data-, value etc. decoration on the options themselves.
Solution 11:[11]
You can also do a double attribute selector in CSS
$('[value="your_value"][selected="selected"]')
So to fire when "your_value" is selected:
if( $('[value="your_value"][selected="selected"]') ) {
// do something
}
Solution 12:[12]
You can check if selected or not with value
var selected_option = $('#propertyArea option:selected').val();
if(selected_option){
console.log('selected ...');
console.log(selected_option);
}else{
console.log('not selected');
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
