Javascript jquery—在选择控件上触发更改事件—can';不要事后确定价值
我有以下jquery代码: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; }
$("#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);
});