2011-07-06 110 views
0

我在模板中創建動態下拉列表。我無法獲得這些選定的值。如何獲得js中動態下拉列表的值選擇

var newjobDropDown = $(document.createElement('div')).attr("id", 'jobDropDown' + counter); 

newjobDropDown.after().html('<label><?php echo __(Job Vacancy); ?></label>' + 
          '<select id="jobDropDown' + counter +'"'+' onchange="validate()"'+' class="vacancyDrop"'+'>'+buildVacancyList()+'</select>'+ 
          '<span onclick="removeDrop(event)"'+'class="removeText"'+ 'id="removeButton'+counter+'">'+remove+'</span>'+'<br class="clear" />'); 

newjobDropDown.appendTo("#TextBoxesGroup"); 

我用下面的代碼來獲取值,但我得到一個空值。

$('#jobDropDown1').val() 
+0

您對'div'和'select'都使用相同的'id'。爲什麼? – thecodeparadox

回答

1

你叫

$('#jobDropDown1').val() 

,但你選擇看起來像

<select id="jobDropDown' 

添加1其ID,它會做的伎倆

1

從您發佈它的代碼看起來像您正在創建具有相同id -the select和前面的div兩個元素。從jQuery docs

如果一個以上的元素已經 分配相同的ID,使用查詢 該ID將只選擇在DOM第一 匹配的元素。

這意味着你的代碼試圖讓div元素的value,而不是在select的。試着給div不同id

var newjobDropDown = $(document.createElement('div')).attr('id', 'jobDropDown_div' + counter); 

newjobDropDown.after().html('<label><?php echo __(Job Vacancy); ?></label>' + 
          '<select id="jobDropDown' + counter +'"'+' onchange="validate()"'+' class="vacancyDrop"'+'>'+buildVacancyList()+'</select>'+ 
          '<span onclick="removeDrop(event)"'+'class="removeText"'+ 'id="removeButton'+counter+'">'+remove+'</span>'+'<br class="clear" />'); 

newjobDropDown.appendTo('#TextBoxesGroup'); 
+0

id在單個頁面內應該是唯一的。 – Quincy

+0

您對'div'和'select'都使用相同的'id'。爲什麼? – thecodeparadox

+0

請再次閱讀我的答案。我發佈的代碼將創建一個ID爲'jobDropDown_div(N)'的''div,後面跟着一個ID爲'jobDropDown(N)'的'select'。 –

1

您已重複id (你不應該)。 你有兩個選擇:

1)切換到不同的ID,然後用jQuery選擇它通常

2)如果你不能不想,你應該做的:

$('select#jobDropDown1').val() 

有了這個,我們通過標籤名來區分兩個相同的ID。

希望這會有所幫助。歡呼聲

相關問題