Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery—在选择控件上触发更改事件—can';不要事后确定价值_Javascript_Jquery_Select_Input - Fatal编程技术网

Javascript jquery—在选择控件上触发更改事件—can';不要事后确定价值

Javascript jquery—在选择控件上触发更改事件—can';不要事后确定价值,javascript,jquery,select,input,Javascript,Jquery,Select,Input,我有以下jquery代码: $("#ruletypes").change(function() { var selectedtype = this.value; var url; if (selectedtype == 1) { url = url1; } else { url = url2; }

我有以下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);
});
$(“#规则类型”).change(函数(){
var selectedtype=this.value;
var-url;
如果(selectedtype==1){
url=url1;
}否则{
url=url2;
}                       
$.getJSON(
网址,
功能(数据){
data=$.parseJSON(data);//转换为javascript对象而不是字符串。。。。
如果(数据!=null){
//删除当前列表中的所有内容。
$(“#联系人类型”)
.find('选项')
.删除()
(完)
//循环浏览结果并添加每个结果
$。每个(数据、功能(i){
$(“#联系人类型”)
.append($(“”)
.attr(“值”,此.id)
.文本(本说明));
})//end.每个
}//如果结束
}//结束函数(数据)
);//结束getJSON。
//设置联系人类型的默认值
如果(selectedtype==1){
$(“#联系人类型”).val(2.change();
}否则{
$(“#联系人类型”).val(1.change();
}
});//结束规则类型。更改
$(“#联系人类型”)。更改(功能(){
var selectedtext=$(“#联系人类型选项:选定”).html();
警报(“联系人类型的选择值为”+selectedtext);
警报(该值);
});
我的问题是,一旦我以编程方式触发联系人类型选择框的更改事件,我似乎无法确定该值。。 我使用的两条alert语句分别返回undefined和null

我也试过了。text()

你能告诉我我的臭虫在哪里吗?我需要能够确定联系人类型中当前所选项目的值

谢谢

您可以使用以下命令:

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

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

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


演示:

为什么不直接使用
$(this).val()
?为什么不使用firstadeno的控制台,如果我们是编码专家,我们就不会寻求帮助。我将尝试修复语法错误。。。但是你可以不让我们看那些淫秽的东西language@markli什么淫秽的语言?adeneo指出了应该作为证据的东西:任何代码的调试/改进/发布只能在正确缩进后开始。它完全独立于程序员的经验。dystroy,你错过了前面的帖子。它现在被删除了,只剩下一条关于缩进的评论…
live
?真正地请在当前文档中查找。@dystroy,您是对的,
Live
可能会导致更改事件出现问题。这是因为
Live
依赖于事件冒泡,而
change
事件不会冒泡。因此,我将其编辑为
bind
method。嘿,谢谢。我试试看。实际上,我已经声明了所有内容……但是在我试图只给出相关的代码时,我忘记了向您展示声明和结束函数的内容。很抱歉。我的bad.tymeJV,我已经编辑了我的帖子以包含所有代码。我试过你的建议,但出于某种原因,我仍然得到空值。嗯…控制台中有什么吗?事实上,我想我得到了,你可能收到了空值,因为AJAX请求是异步的,它在请求之前完成了函数。啊。。有趣的。。。我来测试一下。
$("#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);
});