How to pass parameters on onChange of html select

JavascriptJqueryHtmlComboboxOnchange

Javascript Problem Overview


I am a novice at JavaScript and jQuery. I want to show one combobox-A, which is an HTML <select> with its selected id and contents at the other place on onChange().

How can I pass the complete combobox with its select id, and how can I pass other parameters on fire of the onChange event?

Javascript Solutions


Solution 1 - Javascript

function getComboA(selectObject) {
  var value = selectObject.value;  
  console.log(value);
}

<select id="comboA" onchange="getComboA(this)">
  <option value="">Select combo</option>
  <option value="Value1">Text1</option>
  <option value="Value2">Text2</option>
  <option value="Value3">Text3</option>
</select>

The above example gets you the selected value of combo box on OnChange event.

Solution 2 - Javascript

Another approach wich can be handy in some situations, is passing the value of the selected <option /> directly to the function like this:

function myFunction(chosen) {
  console.log(chosen);
}

<select onChange="myFunction(this.options[this.selectedIndex].value)">
  <option value="1">Text 1</option>
  <option value="2">Text 2</option>
</select>

Solution 3 - Javascript

For how to do it in jQuery:

<select id="yourid">
<option value="Value 1">Text 1</option>
<option value="Value 2">Text 2</option>
</select>

<script src="jquery.js"></script>
<script>
$('#yourid').change(function() {
  alert('The option with value ' + $(this).val() + ' and text ' + $(this).text() + ' was selected.');
});
</script>

You should also know that Javascript and jQuery are not identical. jQuery is valid JavaScript code, but not all JavaScript is jQuery. You should look up the differences and make sure you are using the appropriate one.

Solution 4 - Javascript

JavaScript Solution

<select id="comboA">
<option value="">Select combo</option>
<option value="Value1">Text1</option>
<option value="Value2">Text2</option>
<option value="Value3">Text3</option>
</select>
<script>
 document.getElementById("comboA").onchange = function(){
    var value = document.getElementById("comboA").value;
 };
</script>

or

<script>
 document.getElementById("comboA").onchange = function(evt){
    var value = evt.target.value;
 };
</script>

or

<script>
 document.getElementById("comboA").onchange = handleChange;
 
 function handleChange(evt){
    var value = evt.target.value;
 };
</script>

Solution 5 - Javascript

I found @Piyush's answer helpful, and just to add to it, if you programatically create a select, then there is an important way to get this behavior that may not be obvious. Let's say you have a function and you create a new select:

var changeitem = function (sel) {
  console.log(sel.selectedIndex);
}
var newSelect = document.createElement('select');
newSelect.id = 'newselect';

The normal behavior may be to say

newSelect.onchange = changeitem;

But this does not really allow you to specify that argument passed in, so instead you may do this:

newSelect.setAttribute('onchange', 'changeitem(this)');

And you are able to set the parameter. If you do it the first way, then the argument you'll get to your onchange function will be browser dependent. The second way seems to work cross-browser just fine.

Solution 6 - Javascript

jQuery solution

How do I get the text value of a selected option

Select elements typically have two values that you want to access.
First there's the value to be sent to the server, which is easy:

$( "#myselect" ).val();
// => 1

The second is the text value of the select.
For example, using the following select box:

<select id="myselect">
  <option value="1">Mr</option>
  <option value="2">Mrs</option>
  <option value="3">Ms</option>
  <option value="4">Dr</option>
  <option value="5">Prof</option>
</select>

If you wanted to get the string "Mr" if the first option was selected (instead of just "1") you would do that in the following way:

$( "#myselect option:selected" ).text();
// => "Mr"  
See also

Solution 7 - Javascript

This is helped for me.

For select:

$('select_tags').on('change', function() {
    alert( $(this).find(":selected").val() );
});

For radio/checkbox:

$('radio_tags').on('change', function() {
    alert( $(this).find(":checked").val() );
});

Solution 8 - Javascript

You can try bellow code

<select onchange="myfunction($(this).val())" id="myId">
    </select>

Solution 9 - Javascript

Html template:

<select class="staff-select">
   <option value="">All</option>
   <option value="196">Ivan</option>
   <option value="195">Jon</option>
</select>

Js code:

const $staffSelect = document.querySelector('.staff-select')

$staffSelect.onchange = function () {
  console.log(this.value)
}

Solution 10 - Javascript

this code once i write for just explain onChange event of select you can save this code as html and see output it works.and easy to understand for you.

<html>
	<head>
		<title>Register</title>
	</head>
	<body>
	<script>
		function show(){
			var option = document.getElementById("category").value;
        	if(option == "Student")
                  {
                        document.getElementById("enroll1").style.display="block";
                  }
			if(option == "Parents")
                  {
                        document.getElementById("enroll1").style.display="none";
                  }
			if(option == "Guardians")
                  {
                        document.getElementById("enroll1").style.display="none";
                  }
		}
	</script>
			<form action="#" method="post">
				<table>
					<tr>
						<td><label>Name </label></td>
						<td><input type="text" id="name" size=20 maxlength=20 value=""></td>
					</tr>
					<tr style="display:block;" id="enroll1">
						<td><label>Enrollment No. </label></td>
						<td><input type="number" id="enroll" style="display:block;" size=20 maxlength=12 value=""></td>
					</tr>
					<tr>
						<td><label>Email </label></td>
						<td><input type="email" id="emailadd" size=20 maxlength=25 value=""></td>
					</tr>
					<tr>
						<td><label>Mobile No. </label></td>
						<td><input type="number" id="mobile" size=20 maxlength=10 value=""></td>
					</tr>
					<tr>
						<td><label>Address</label></td>
						<td><textarea rows="2" cols="20"></textarea></td>
					</tr>
					<tr >
						<td><label>Category</label></td>
						<td><select id="category" onchange="show()"> 	<!--onchange show methos is call-->
								<option value="Student">Student</option>
								<option value="Parents">Parents</option>
								<option value="Guardians">Guardians</option>
							</select>
						</td>
					</tr>
				</table><br/>
			<input type="submit" value="Sign Up">
        </form>
	</body>
</html>

Solution 11 - Javascript

Just in case someone is looking for a React solution without having to download addition dependancies you could write:

<select onChange={this.changed(this)}>
   <option value="Apple">Apple</option>
   <option value="Android">Android</option>                
</select>

changed(){
  return e => {
    console.log(e.target.value)
  }
}

Make sure to bind the changed() function in the constructor like:

this.changed = this.changed.bind(this);

Solution 12 - Javascript

This worked for me onchange = setLocation($(this).val())

Here.

    @Html.DropDownList("Demo", 
new SelectList(ViewBag.locs, "Value", "Text"), 
new { Class = "ddlStyle", onchange = "setLocation($(this).val())" });

Solution 13 - Javascript

Simply:

function retrieve(){
alert(document.getElementById('SMS_recipient').options[document.getElementById('SMS_recipient').selectedIndex].text);
}

function retrieve_other() {
  alert(myForm.SMS_recipient.options[document.getElementById('SMS_recipient').selectedIndex].text);
}

function retrieve() {  alert(document.getElementById('SMS_recipient').options[document.getElementById('SMS_recipient').selectedIndex].text);
}

<HTML>
<BODY>
  <p>RETRIEVING TEXT IN OPTION OF SELECT </p>
  <form name="myForm" action="">
    <P>Select:
      <select id="SMS_recipient">
        <options value='+15121234567'>Andrew</option>
          <options value='+15121234568'>Klaus</option>
      </select>
    </p>
    <p>
      <!-- Note: Despite the script engine complaining about it the code works!-->
      <input type="button" onclick="retrieve()" value="Try it" />
      <input type="button" onclick="retrieve_other()" value="Try Form" />
    </p>
  </form>
</HTML>
</BODY>

Output: Klaus or Andrew depending on what the selectedIndex is. If you are after the value just replace .text with value. However if it is just the value you are after (not the text in the option) then use document.getElementById('SMS_recipient').value

Solution 14 - Javascript

 //html code
   <select onchange="get(this)">
      <option value="a">1</option>
      <option value="b">2</option>
      <option value="c">3</option>
    </select>

//javscript code
   function get(select) {
      let value = select.value;  
      console.log(value);
    }
    

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionGendafulView Question on Stackoverflow
Solution 1 - JavascriptPiyush MattooView Answer on Stackoverflow
Solution 2 - JavascriptCazuma Nii CavalcantiView Answer on Stackoverflow
Solution 3 - JavascriptaihamView Answer on Stackoverflow
Solution 4 - JavascriptRobertKimView Answer on Stackoverflow
Solution 5 - JavascriptMichael PlautzView Answer on Stackoverflow
Solution 6 - JavascriptAniket KulkarniView Answer on Stackoverflow
Solution 7 - JavascriptilgamView Answer on Stackoverflow
Solution 8 - Javascriptfeyyaz acetView Answer on Stackoverflow
Solution 9 - JavascriptkostikovmuView Answer on Stackoverflow
Solution 10 - JavascriptPiyushView Answer on Stackoverflow
Solution 11 - JavascriptRawBDataView Answer on Stackoverflow
Solution 12 - JavascriptDeepak SinglaView Answer on Stackoverflow
Solution 13 - JavascriptKlausView Answer on Stackoverflow
Solution 14 - JavascriptOmarsSaadeView Answer on Stackoverflow