I have a select menu that triggers an AJAX request once one of the options has been clicked. I need to trigger a click event on the relevant option from a link. So I have code similar to the below, and although it changes the value of the select, it doesn't simulate a click:
$('#click').click(function(){
var value = $(this).attr("rel");
$('#select').val(value);
return false;
});
<select id="select" name="select">
<option>Select...</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
<a href="#" rel="1" id="click">Click for option 1</a>
Triggering a click event on the option will not work. Here is a snippet that does:
$('#click').on('click', function(){
var value = $(this).attr('rel'); //get the value
value++; //increment value for the nth-child selector to work
$('#select')
.find('option:nth-child(' + value + ')')
.prop('selected',true)
.trigger('change'); //trigger a change instead of click
return false;
});
I have setup a fiddle here showing the same. This should work.
Instead of using a click you can trigger the change event and achieve the same effect.
$('#click').click(function(){
var value = $(this).attr("rel");
$('#select')
.val(value)
.trigger('click');
return false;
});
Merely setting the value of a <select>
does not trigger the click event of that element; it must be called directly.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With