The logic in the change() event handler is not being run when the value is set by val(), but it does run when user selects a value with their mouse
change()
val()
If you've just added the select option to a form and you wish to trigger the change event, I've found a setTimeout is required otherwise jQuery doesn't pick up the newly added select box:
window.setTimeout(function() { jQuery('.languagedisplay').change();}, 1);