2016-12-02 82 views
0

我在工作中创建了一个动态创建的下拉菜单。我的HTML代码是简单的Javascript创建的下拉菜单在一条线上展开

<SELECT id="competitors"> 
    <OPTION value="0">All values</OPTION> 
</SELECT> 

我已经创建了一个js函数,焦点执行适当的查询并附加html。

success: function (data) { 
    $(id).append(data.arr); 
) 

其追加纯HTML作为我环阵列

$text .= "<OPTION value=\"$id\">$name</OPTION>"; 

事后我编码串

$str['arr'] = $text; 
echo json_encode($str); 

CSS为下拉仅具有width属性和该下拉是除其他都遵循相同的规则(使用焦点功能动态创建)。

问题是,当我在追加数据后单击下拉列表时,它不会展开。它仍然以“导航栏”单行的Dropbox 所以,当我点击它whlie是越来越它的外观数据,如that 和响应,而不是一个完整的下拉列表后,我得到可能有帮助的是that

信息即: 1.该请求可能需要很长的时间(2-10秒),因为我必须加入多个表并将几千条线的几个要点分组。 2.当我收到导航栏的1行下拉菜单后,如果我重新点击它,它会根据情况进行扩展。

任何想法?

+0

如果它采取这么长时间返回你的结果,你可以禁用下拉直到你的回调成功? – DevlshOne

+0

'data.arr'包含什么?另一方面,因为您正在使用jQuery,您是否想使用jQuery来完成工作? – Raptor

+0

@Raptor data.arr包含包含$ str ['arr']的数组的json_encode。 $ str ['arr']只有一个元素是列表的HTML。这是$ str ['arr'] [0] = 。我会尝试使用纯jQuery,并且会返回结果。无论如何thnx。 – GeoM

回答

0

那么你可以做这样的事情使用JavaScript

HTML:

<select id="competitors"> 
    <option value="0"> All values </option> 
</select> 

的javascript:

document.getElementById('competitors').options[competitors.options.length] 
= new Option('theName', 'the value'); 

这里是一个小提琴:https://jsfiddle.net/f5a81Lv6/