0

我有两个表单元素。一种是通过 getJSON 调用动态填充的下拉列表。另一个是标准输入文本框。

当表单加载时,下拉列表被填充。文本框“通常”会有一个值,因为这是一个批准表格。

我想要做的是让我的下拉列表中与文本框中的值匹配的值成为选定的选项。这适用于这种类型的其他下拉菜单,但在这种情况下,我认为我的下拉值和文本框值中的空格存在问题。

在我遇到的问题中,我的文本框的值为“Big Red Barn”。(没有引号)我的下拉列表中的一个值也有一个值“大红谷仓”。(无引号)这应该是选定的。

形式:

<select name="cu_vendors" id="cu_vendors">
</select>

<input type="text" name="ven_name" id="ven_name" />

我的下拉列表填充得很好。

查询:

$.getJSON("get-cu-vendors.html", function(data){
  $('#cu_vendors').html('');
  if(data && data.length > 0){
    $('#cu_vendors').append("<option value='' class='red'>Required</option>");
        $.each(data, function(key, value){
        $("#cu_vendors").append("<option value=\""+$.trim(value)+"\">"+value+"</option>");                  
    });         
  }else{
   $('#cu_vendors').html('');
  }
});
 $("#cu_vendors option[value="+ $('#ven_name').val() +"]").attr('selected', 'selected');

我收到语法错误,但不是:

Error: Syntax error, unrecognized expression: #cu_vendors option[value=Big Red Barn]

所以,我认为空间是这里的问题。当我在上面的最后一行中使用 $('#ven_name').val() 时,JQuery 中有没有办法引用这些值?

谢谢你的帮助。

4

3 回答 3

1

两件事.. 首先,设置所选选项的行需要在$.getJSON回调中,否则它将在 ajax 调用完成之前执行。其次,由于选择器中的值有空格,因此需要引用该值:

$.getJSON("get-cu-vendors.html", function (data) {
    $('#cu_vendors').html('');
    if (data && data.length > 0) {
        $('#cu_vendors').append("<option value='' class='red'>Required</option>");
        $.each(data, function (key, value) {
            $("#cu_vendors").append("<option value=\"" + $.trim(value) + "\">" + value + "</option>");
        });
        $("#cu_vendors option[value='" + $('#ven_name').val() + "']").attr('selected', 'selected');
    } else {
        $('#cu_vendors').html('');
    }    
});

您可以从错误消息中看到您的选择器如下所示:

#cu_vendors option[value=Big Red Barn]

当它需要看起来像这样时:

#cu_vendors option[value="Big Red Barn"]
于 2013-09-20T14:48:29.690 回答
0
 $("#cu_vendors option[value='"+ $('#ven_name').val() +"']")

应该做的伎俩。

空格没问题!

注意'的使用:你想要“value='thing with spaces'”而不是“value=thing with spaces”。

另外,正如有人现在已经说过的那样,您可以从错误消息中看到缺少简单的引号。

于 2013-09-20T14:47:46.540 回答
0

我认为您在选择器周围缺少引号:

$("#cu_vendors option[value='"+ $('#ven_name').val() +"']").attr('selected', 'selected');
于 2013-09-20T14:49:36.200 回答