0

我有以下 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 选择框的更改事件,我似乎无法确定值是什么。我有两个警报语句分别返回 undefined 和 null。

我也试过.text()。

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

谢谢。

4

2 回答 2

1

好吧,您应该使用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/

于 2013-06-18T13:39:39.143 回答
0

您可以使用以下内容:

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

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

于 2013-06-18T13:32:47.853 回答