在选择控件上触发更改事件 - 之后无法确定值

triggering change event on select control - can't determine value afterwards

本文关键字:事件 之后 无法确定 控件 选择      更新时间:2023-09-26

我有以下jquery代码:

$("#ruletypes").change(function()  {                        
    var selectedtype = this.value;                  
    var url;
    if (selectedtype == 1) {
        url = url1;
    } else {
        url = url2;
    }                       
    $.getJSON(
        url,
        function(data) {
            data = $.parseJSON(data); //converting to a javascript object vs. just string....                                  
            if (data !=null){
                //remove everything in current list.
                $('#contact_types')
                .find('option')
                .remove() 
                .end()                      
                //loop through results and add each one     
                $.each(data, function(i) {
                    $('#contact_types')
                    .append($("<option></option>")
                    .attr("value",this.id)                                                  
                    .text(this.description));
                }); //end .each                             
            }//end if
        }//end function(data)
    );//end getJSON.    
    //set default values for contact type
    if (selectedtype == 1)  {                   
        $('#contact_types').val(2).change();  
    } else  {
        $('#contact_types').val(1).change(); 
    }
});//end ruletypes.change
$("#contact_types").change(function () {
    var selectedtext = $("#contact_types option:selected").html();
    alert("select value of contact type is" + selectedtext);
    alert(this.value);
});

的问题/问题是,一旦我以编程方式触发了contact_types选择框的更改事件,我似乎无法确定值是什么。我拥有的两个警报语句分别返回未定义和空。

我也尝试过 .text((。

你能告诉我我的错误在哪里吗? 我需要能够在contact_types中确定当前所选项目的值。

谢谢。

好吧,您应该使用 this.value 通过 onchange 事件获取当前选定的值。修复了明显的语法错误(未声明的变量、缺少)}等(:

$("#ruletypes").change(function () {
    var selectedtype = this.value;
    if (selectedtype == 1) {
        $('#contact_types').val(2).change();
    } else {
        $('#contact_types').val(1).change();
    }
});
$("#contact_types").change(function () {
    var selectedtext = $("#contact_types option:selected").html();
    alert("select value of contact type is" + selectedtext);
    alert(this.value);
});

演示:http://jsfiddle.net/fgQt3/

您可以使用以下内容:

$("#contact_types").bind('change', function(e) {
alert(e.target.options[e.target.selectedIndex].text);
});

或者简单地使用:alert($(this).val());在该更改事件中。