2011-01-12 159 views
0

如何在jQuery中編寫一個點擊事件來捕獲下拉列表的值?我有:獲取jquery下拉列表的值

var select = $('select #dealerName'); 
    $(function { 
     select.click(function { 
      alert($('#dealerName').val()); 
     }); 

    }); 

我只是想獲得價值 - 這就是爲什麼我提醒它。點擊功能會是什麼樣子?我的下拉列表中的ID是「dealerName」。上面沒有提醒任何事情。

回答

5

那是因爲你沒有正確

var select = $('select #dealerName'); 

選擇應該是

var select = $('select#dealerName'); 

但是...我假設你想在被選中之後獲得的價值?因爲只要您打開下拉菜單,您就會收到警報。

而不是使用.click()的,使用.change()

編輯:個人而言,我只想直接連接處理程序的對象。

$('select#dealerName').change(function() { 
    alert($(this).val()); 
} 
+0

這並不會提醒什麼。我如何測試jQuery是否被調用? – sehummel

+0

更新了答案,我只是直接在對象上調用它。 – jondavidjohn

+0

你的函數調用看起來很時髦:$(function(){ –

0

嗯,我看到幾個可能的錯誤:

在第一行選擇刪除的空間。

select#dealername 

這意味着「選擇標籤的id爲dealername」。您的版本是「被稱爲經銷商名稱的元素,它是選擇標籤的子女」。

另外,在編寫內聯函數時,在function關鍵字後面加上()。

1

五兩件事:

  1. 除非你的JavaScript代碼是在文件的底部,你需要包含在$ 所有您的jQuery(函數(){}); - 因爲它現在正在嘗試在DOM準備好被訪問之前找到你的選擇。

  2. 如果<select>元素的ID是#dealerName,你的jQuery選擇將是$(「#dealerName」) - 因爲它是現在你正在尋找一個後代與指定的ID的<select>。您也不想選擇#dealerName,因爲ID是唯一的,並且指定標籤只會減慢jQuery的速度。

  3. click將在有人點擊選擇時立即觸發,而不是在選擇新選項時觸發。你可能想change

  4. 不算什麼大不了的事,但有一個稍微流行的約定來命名引用jQuery的包裝用$在開始時能夠快速分不清什麼是一個jQuery包裹的變量。

  5. 內的事件調用,您可以快速引用元素與問題this

所以工作的例子是:

$(function() { 
    $('#dealerName').change(function() { 
     alert($(this).val()); 
    }); 
});