设置选择值

时间:2010-09-02 16:15:49

标签: javascript jquery html forms

嘿所有,有没有办法设置一个选择的值,并让它像用户更改一样? 我用了

$(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,然后在网址中使用。因此,在名为“大学”的选择的更改事件中,我希望通过设置部门选择的值,部门的更改事件中的逻辑将执行。

有什么想法吗?

3 个答案:

答案 0 :(得分:6)

我原以为它会触发#department更改事件处理程序。您可以按如下方式手动触发它:

$('#university').change(function(){
    var selected = $("#university :selected").val();
    $('#department').val(selected);
    $('#department').trigger('change');
});

答案 1 :(得分:3)

这是一个解决您所描述的确切问题的资源:

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/

答案 2 :(得分:0)

您是否尝试过调用$('#department').change()内的$('#university').change()