2012-07-27 107 views
0
function ddlList_Changed() { 
    var ddlList = jQuery('select[name*="ddlList"]'); 
    var value = jQuery(ddlList).val(); 
    alert(value); 
} 

以上显示的是当下拉列表的选择发生更改时显示'undefined'的警报。onChange事件上未定义jQuery .val()

我周围的其他情形看是.VAL()一直是不确定的,建议是该.VAL()需要被调用后的文件已经准备好/已满载 - 但肯定这是很好无论如何,它只是在选择上被解雇而改变了吗?

注意:ddlList不为空,它最初选择它没有任何问题。 .val()似乎是问题。

+2

(一)'ddlList'已经是一个jQuery对象,没有必要把它传递给jQuery的(它相当于'jQuery(jQuery('select [name * =“ddlList”]'))。val()')(b)这样的元素是否存在? (c)* edit *:'ddList'将从不**为null,因为'jQuery' **总是返回一个jQuery对象(但它可能不包含任何元素)。 – 2012-07-27 15:47:24

+1

您有多少个选择包含名称“ddlList”? – 2012-07-27 15:47:37

+0

你是怎么调用这个函数的? – 2012-07-27 15:48:00

回答

1
$('select').change(function(){ 
    var ddlList = $('select option:selected').val(); 
    alert(ddlList);     
}); 
2

请提供代码示例(相关的HTML,JavaScript事件代码等),以便我们可以看到错误的位置。因为它不是选择更改事件或val()函数是错误的。

另外,你可能不应该重复包装一个jQuery对象的ddlList一遍又一遍。

还要注意,当一个元素被分配给this变量的元素上调用事件处理程序时 - 无需再次使用jQuery选择器来查找它。

工作例如:http://jsfiddle.net/RCLjy/5/

+0

我打算采用这种方式为事件处理程序接线,而不是代码隐藏.... – 2012-07-27 15:49:36

+1

我认为这是一个好方法 - 我从来不喜欢将WebForms代码隐藏与JavaScript混合的想法事件接线。特别是当jQuery非常简单时。让我知道它是如何工作的。 – 2012-07-27 15:52:09

+0

Yer我同意,让代码隐藏告诉客户端脚本来处理一个感觉不好的事件 - 我仍然习惯于jQuery的能力。你的回答在这里帮助我的队友,非常感谢。问题解决了。 (当它让我时,我会标记为答案)。 – 2012-07-27 15:53:21

1

http://jsfiddle.net/39hwp/

所有你需要的是:

$('select[name*="ddlList"]').change(function() { 
    alert($(this).val());  
}); 
+0

非常感谢。 +1。 – 2012-07-27 15:54:12