2009-12-07 42 views
2

我有一個動態生成的下拉菜單,我需要使用Jquery更改選定的值。Jquery - 更改動態下拉選中元素

<select class="txtfield country" id="ctl00_MainContentAreaPlaceHolder_personalInformation_country" name="ctl00$MainContentAreaPlaceHolder$personalInformation$country"> 
    <option value="FJ">FIDJI</option> 
    <option value="FI">FINLANDE</option> 
    <option value="FR" selected="selected">FRANCE METROPOLITAINE</option> 
    <option value="GA">GABON</option> 
</select> 

一種方法是使用下拉的整個ID(includng ctl00 ..):

$j("#ctl00_MainContentAreaPlaceHolder_DeliveryPersonalInformation_country option[value='FR']").attr('selected', 'selected'); 

是否有使用CSS我能找到的元素,改變值,因爲我不喜歡的方式使用動態控件的ID?

編輯:

我忘了提,我有相同的下拉列表的名稱在頁面上2個自定義控件。

所以定製控制1生成:

<select class="txtfield ckgcountry" id="ctl00_MainContentAreaPlaceHolder_personalInformation_country" name="ctl00$MainContentAreaPlaceHolder$personalInformation$country"> ... 
    <option value="ZW">ZIMBABWE</option> 
</select> 

和客戶控制2生成:

<select class="txtfield country" id="ctl00_MainContentAreaPlaceHolder_personalInformation_country" name="ctl00$MainContentAreaPlaceHolder$personalInformation$country"> 
    <option value="FJ">FIDJI</option> 
    <option value="FI">FINLANDE</option> 
    <option value="FR" selected="selected">FRANCE METROPOLITAINE</option> 
    <option value="GA">GABON</option> 
</select> 

因此,使用它的變化只有第一名字的發現在DOM值的代碼,如何我是否改變第二個的值...有沒有辦法使用CSS來做到這一點?

+0

您無法使用CSS更改值。 – a432511 2009-12-07 16:30:08

+0

我看着你對你的問題所做的修改。您網頁上的任何兩個元素都不應共享相同的ID。 ID的意思是在DOM中是唯一的,不應該重複。考慮將第二個選擇的ID更改爲「personalInformation_country2」之類的其他內容 – a432511 2009-12-07 16:33:24

回答

6

看起來你正在使用ASP.NET。

使用完整的ASP.NET控件ID(post-render)確實不可靠,因爲它可能會在某些時候改變。唯一保證不改變的ID部分是在ASP.NET控件的ID屬性中定義的ID的最後部分。

選擇該項目使用通配符選擇

// Unselect the currently selected item 
$("select[id$='personalInformation_country'] option:selected").removeAttr("selected"); 

// Select the option at index 0 
$("select[id$='personalInformation_country'] option:eq(0)").attr("selected","selected"); 

// Select the option with value FR 
$("select[id$='personalInformation_country'] option[value='FR']").attr("selected","selected"); 

$='personalInformation_country'將匹配所有ID的結尾與 「personalInformation_country」,這應該只有一個!

+0

這就像一個魅力..我只是增加了更多的描述我的問題,你可以看到是否有一種方法使其工作? :) 謝謝 !! - – 2009-12-07 16:03:16

+0

我看着你對你的問題所做的修改。您網頁上的任何兩個元素都不應共享相同的ID。 ID的意思是在DOM中是唯一的,不應該重複。考慮將第二個選擇的ID更改爲「personalInformation_country2」之類的其他內容 – a432511 2009-12-07 16:32:51

0

你的意思是這樣嗎?

$('select.country').val('FR'); 

這將設置選擇與CSS類「國家」

如果你想更好地查明選擇,你需要使用ID /名稱,或者確保它是所有選擇元素嵌套在一個方式,你可以確定它可以位於。

例如

$('form[name=myForm] select.country').val('FR');//presuming there is only one 
0

這是很難說沒有看到標記的其他頁面上,但是你需要確保uniquness讓您得到正確的選擇元素,因此ID通常是最好的選擇。

如果你可以使用確切的ID,因爲這有最好的表現,但是你問的選擇,所以它在這裏。

有幾個選項:

$('select.txtfield')會發現該類txtfield所有選擇,因此可能不是唯一的。

更好的選擇也許$('select.txtfield.country'),我認爲是獨一無二的?

或「黑客」的web表單是使用端,與選擇

$('select[id$=personalInformation_country]') 
+0

這就像一個魅力..我只是在我的問題中添加了更多描述,你能否看到是否有一種方法使它工作? :) 謝謝 !! – 2009-12-07 16:02:37

+0

你在做什麼約 – redsquare 2009-12-07 16:59:03