jQuery.val()方法无法在选择列表上设置值?

时间:2010-03-03 16:55:33

标签: javascript jquery

当我升级到1.4.1时,以下代码失败,当我回滚到1.3.2时工作正常。

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());
                }
            });

1 个答案:

答案 0 :(得分:6)

如果你设置,这将有效,在jQuery 1.4中必须是值而不是文本,例如:

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

在jQuery 1.3中,这有效:$("#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(“...”)不再含糊不清(它现在将始终按值选择,而不是按文本值选择)。 (提交)