2012-07-27 106 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