Velvet Star Monitor

Standout celebrity highlights with iconic style.

updates

How to pass parameters on onChange of html select

Writer Olivia Zamora

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?

1

14 Answers

function getComboA(selectObject) { var value = selectObject.value; console.log(value);
}
<select 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.

5

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>
3

For how to do it in jQuery:

<select>
<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.

2

JavaScript Solution

<select>
<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>
2

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.

2

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> <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

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() );
});
0

You can try bellow code

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

Html template:

<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)
}

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" size=20 maxlength=20 value=""></td> </tr> <tr> <td><label>Enrollment No. </label></td> <td><input type="number" size=20 maxlength=12 value=""></td> </tr> <tr> <td><label>Email </label></td> <td><input type="email" size=20 maxlength=25 value=""></td> </tr> <tr> <td><label>Mobile No. </label></td> <td><input type="number" 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 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>

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);

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())" });

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> <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

 //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); } 
1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy