2010-03-03 53 views
4

當我升級到1.4.1時,以下代碼失敗,並且在回滾到1.3.2時工作正常。jQuery.val()方法無法在選擇列表上設置值?

var ddlCountry = $("#<%= this.ddlCountry.ClientID %>"); 
    if (ddlCountry.val() == "") { 
    ddlCountry.val(address.country); 
    ddlCountry.change(); 
    } 

順便說一句,問題是,<select>列表的值從來沒有設置。

是的,這是所有在$(document).ready :)

編輯包裹起來:供參考,這是我使用的代碼:

  ddlCountry.find("option").each(function() { 
       if ($(this).text() == address.country) { 
        ddlCountry.val($(this).val()); 
       } 
      }); 
+0

什麼是'address.country'? – 2010-03-03 16:59:58

+0

這是一個來自Google AJAX Search API地理位置功能的字符串值。 – AndrewVos 2010-03-03 17:01:56

+0

你想要設置什麼'價值'的選擇?選定的項目? – Lazarus 2010-03-03 17:02:38

回答

6

如果您正在設置,這將工作在jQuery的1.4是必須的值不是文本,例如:

<select id="ddlCountry"> 
    <option value="1">A</option> 
    <option value="2">B</option> 
</select> 

在jQuery中,這個作品:$("#ddlCountry").val("A")
在1.4它並不一定是:$("#ddlCountry").val("1")

另外,如果你不能改變你的下拉菜單中,您可以搜索並選擇基於這樣的文字:

ddlCountry.filter(function() { 
    return $(this).text() == address.country; 
})[0].selected = true; 

僅供參考,here's the jQuery change that happened 。從1.4註釋:

.val(「...」)對選項或複選框不再含糊不清(它總是按值選擇,而不是按文本值)。 (Commit)

+0

這實際上是以前的承諾,改變了'