嘿,有什么方法可以设置一个select的值并让它看起来像是被用户更改了一样?
我用过
$(document).ready(function(){
$('#department').change(function(){
$('#academicbody').hide();
var selected = $("#department :selected").val();
$('#progrmmehome').load('/email/programmelist/'+selected);
});
$('#university').change(function(){
var selected = $("#university :selected").val();
$('#department').val(selected);
$('#progrmmehome').load('/email/programmelist/'+selected);
});
});
基本上,当选择大学时,它的值是部门id,然后在url中使用。因此,在名为“university”的select的更改事件中,我希望通过设置department select的值,执行department的更改事件中的逻辑。
有什么想法吗?
最佳答案
这里有一个资源可以解决您描述的问题:
jQuery val( val ) and the absence of onChange firing
(另外,这里还有一个链接指向文章的Google缓存版本,因为该站点目前要么很慢要么没有响应:jQuery val( val ) and the absence of onChange firing (Cached))
综上所述,目前还没有可靠的、跨浏览器的人为触发实际浏览器事件的方法。具体来说,IE和Firefox实现事件的方式不同,因此jQuery这样的跨浏览器兼容库不可能忠实地再现事件。
因此,典型的方法是手动触发通过jQuery分配的事件处理程序。出于前面提到的原因,这实际上不会触发事件,而只是调用分配的处理程序函数。
正如Pat建议的那样,您可以使用$('#department').trigger('change');
或快捷功能$('#department').change();
手动触发事件(两者都有相同的效果)。我在上面链接的文章也提出了一个创造性的解决方案。而不是每次都要手动触发事件,如果您想多次这样做,只需像这样扩展jQuery:
(function($) {
$.fn.valChange = function(newValue) {
return this.each(function() {
var obj = $(this);
obj.val(newValue);
obj.change();
});
};
})(jQuery);
然后,如果要更改值,请使用
valChange()
函数而不是标准val()
。简而言之,就是使用标准val()
函数更改值,然后触发更改事件。以下是所有这些活动的现场演示:http://jsfiddle.net/rXEPW/
关于javascript - 设置选择值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3629045/