2010-03-03 82 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

这实际上是以前的承诺,改变了'