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

时间:2013-06-18 13:26:30

标签: javascript jquery select input

我有以下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()。

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

感谢。

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

您可以使用以下内容:

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

或仅在更改事件中使用:alert($(this).val());