使用AJAX选择菜单表现奇怪

时间:2013-11-30 23:38:42

标签: javascript jquery ajax

我有一个下拉列表,其选项会动态填充:

function populateDropdown(dropdownNum) {
// invokeWebService uses $.ajax
json = invokeWebService("GET", "/webservice/dropwdownOptions");
optionsHtml = "";

$.each(json, function(count, jsObj) {
             optionValue = jsObj.name
             optionsHtml+="<option>" + optionValue + "</option>";
             });

var dropdownId = "#NRdropdown_" + dropdownNum;
$(dropdownId).html(optionsHtml);
}

function display(blockNum) {
var url = "/webservice/blocks" + blockNum;
var response = invokeWebService("GET", url);

var replacementHtml = "";
var currBlock = "blah";

$.each(response, function(i, block) {
                 currName = block.name;
                 var textfield = "<input type='text' id='blockValue" + block.id +
                                 "'>";
                 var dropdownMenu = "<select id=\"NRdropdown_" + i + 
                                    "\"onClick=\"populateDropDown(" + i +
                                    ")\"><option>Existing Blocks</option>"

                 var submitButton = "<input type='submit' value='UPDATE' id='" +
                                    block.id + "'><br><br>";

                 replacementHtml = currName + textfield + dropdownMenu + submitButton;
                 });
$("#main").html(replacementHtml);
}

javascript函数“populateDropdown(dropdownNum)”:

  1. 提出ajax请求
  2. 将选项值的json响应解析为名为optionsHtml
  3. 的html字符串
  4. 使用选项值替换select元素的内部html:

    var dropdownSelector = "#NRdropdown_" + dropdownNum;
    $(dropdownSelector).html(optionsHtml)
    
  5. 1)当我点击下拉箭头时,我仍然看到“现有积木” 2)1秒后我看到第一个动态生成的选项UNDERNEATH“现有块”选项,我没有看到其他动态生成的选项。
    3)然后我在下拉列表外单击,看到dropdwon显示第一个动态生成的值 4)最后,我再次单击下拉箭头,它将按原样运行所有动态生成的值。

    如何让它发挥作用:

    1. 首次加载页面时,下拉列表会显示“现有块”。
    2. 点击下拉箭头后,下拉列表应显示所有动态生成的值,而不显示“现有块”值。
    3. 谢谢!

1 个答案:

答案 0 :(得分:0)

下拉监听器应该是onmousedown,而不是onclick