2010-12-14 91 views
18

将菜单从常规选择更改为jQuery selectmenu后,我无法再以编程方式选择选项。有没有办法做到这一点?如何动态地在jQuery ui selectmenu中选择一个选项?

代码选择是(假设ListId是列表的实际的ID)

$('#ListId').val(value); 

该插件活化状态是这样的:

$("#ListId").selectmenu({ style: "dropdown", width:140 }); 

有没有办法在选择项目选择菜单?调用相同的.val(value)函数只是选择隐藏的原始选择列表中的值,而不是精心设计的jQuery selectmenu。

+0

这个答案为我工作http://stackoverflow.com/工作a/26501171/119741 – Nick 2015-02-10 22:58:54

回答

23
$('#ListId').selectmenu("value", value); 
+4

http://stackoverflow.com/questions/14970729/uncaught-error-no-such-method-value-for-selectmenu-widget-instance – dtrunk 2014-01-21 07:53:31

+29

不适用于n新版本的jQuery UI,试试这个,而不是$('#listId').val(value).selectmenu('refresh') – 2015-04-02 13:56:58

+0

@TheodoreK。使用'$('#listId').val(value).selectmenu('refresh')'throws'Uncaught Error:没有这样的方法'实例'菜单窗口小部件实例。任何解决方案?我已经将列表初始化为'$(“#listId”)。selectmenu();'并且使用for循环动态填充选项 – 2017-12-28 08:42:01

2

您还可以通过添加更改呼叫触发这种改变事件处理程序:

$('#ListId').selectmenu("value", value); 
$('#ListId').selectmenu("change"); // Add this for a change event to occur 
+0

当您只需要重置菜单时,可以通过强制更改调用来产生副作用。 – 2016-10-25 15:22:21

1

请注意,您必须使用指标(不是值)来选择使用此方法的选项。

例如,给出这个选择。

<select id="ListId"> 
    <option value="value-one">One</option> 
    <option value="value-two">Two</option> 
</select> 

在这种情况下,表达式$('#ListId').selectmenu("value", "value-two");不会返回任何结果。相反,我们必须使用$('#ListId').selectmenu("value", "2");。换句话说,我们必须使用select中元素的位置/索引。不是价值!

找到索引很容易。您可以使用以下行来实现它。

var index = $('#ListID option[value="value-two"]').index(); 
$('#ListId').selectmenu("value", index); 
+1

这不是为我工作......在进一步寻找时,我发现'$('#select')。prop(“selectedIndex”,0).selectmenu('refresh');'at http://underprise.com /快速尖端设定装置,所述索引对的一选场与 - jquery的/ – sbru 2015-08-11 18:49:49

16

假设你以前已经做过这部分一次:

$("#ListId").selectmenu({ style: "dropdown", width:140 }); 

我发现这工作:

$('#ListId').val(value); 
$('#ListId').selectmenu("refresh"); 

这将导致程式化的下拉,以显示正确的值。

0

我曾尝试以下,并且它不会在我的处境

1.

$('#ListId').val(value); 
$('#ListId').selectmenu("refresh"); 

2.

$('#ListId').selectmenu("value", value); 

3.

var option = $("#ListID option") 
option.attr("selected", true); 
// option.prop("selected", true); 
// option.attr("selected", "selected"); 
// option.prop("selected", "selected"); 
$('#ListId').selectmenu("refresh"); 

刷新工作,选中......等。在某些情况下它不起作用。

因此,我按ctrl + 我在的chrome中查看源代码。 和我使用下面的代码来解决我的情况。

// Set Component Separator jQuery UI SelectMenu 
componentSeparatorPlaceHolder.find(".ui-selectmenu-text").html(inputComponentSeparatorStr); 
// Set ComponentSeparatorDropDown 
componentSeparator.val(inputComponentSeparatorStr); 
0

我曾尝试以下方法,并且它在我的处境

$('#ListId').find('option[value=""]').attr("selected", true);  

OR

$('#ListId').prop('selectedIndex', 0); 
相关问题