如何使用JQueryMobile为ajax填充<select>选择<option>默认值?</select> </option>

时间:2014-08-19 15:18:26

标签: javascript ajax jquery-mobile select

我在<select>填写了来自ajax电话的回复。

这是JS代码:

var myOptions = {val1 : project1,
                 val2 : project1,
                 val4 : project1,
                 val5 : project1,
                 };

                 $.each(myOptions, function(val, text) {
                 $('#projectid').append(
                 $('<option ></option>').val(val).html(text)
                 );
                 });

我的HTML代码:

<input type="hidden" name="ehidden" value="true">
  <select name="project" id="projectid"></select>

我得到的所需DropDown列表没问题,但我无法将第一个<option>设置为默认选择。

这是我已尝试过的一些代码:

$('select.projectid').find('option[value="val1"]').prop('selected', true);

我没有错误,但也没有结果。与此相同:

$("#projectid").val($("#projectid option:first").val());

第二个问题:

第一次<option>在我第一次选择鼠标时不可用,我必须先选择第二个<option>,然后再选择第一个{{1}}。

2 个答案:

答案 0 :(得分:1)

你的选择器在这一行是错误的:

$('select.projectid').find('option[value="val1"]').prop('selected', true);

这是选择class projectid的下拉列表。它应该是:

$('#projectid').find('option[value="val1"]').prop('selected', true);

...将选择id projectid的元素。

关于此代码:

$("#projectid").val($("#projectid option:first").val());

我不确定您打算做什么,但会在下拉列表中选择第一个选项。如果未选择其他选项,则默认选择第一个选项。因此,如果您在页面加载时运行此代码,它当然不会执行任何操作,因为已经选择了第一个选项。

关于你的第二个&#34;问题,您需要将其作为单独的问题发布,因为它与此问题无关。但是,一定要在摆出它之前在这里搜索答案。

答案 1 :(得分:0)

您可以对代码进行一些改进,使其更简单,并允许您轻松标记所选选项。这是一个解决问题的方法:jsfiddle

var myOptions = [
    { name: "A", value: "val1", selected: true},
    { name: "B", value: "val2"},
    { name: "C", value: "val3"},
    { name: "D", value: "val4"}
];

var optionsHtml = "";
for(var i = 0; i < myOptions.length; i++) {
    var val = myOptions[i];
    optionsHtml += '<option value = "' + val.value + '"';

    if(val.selected)
        optionsHtml += 'selected="' + val.selected + '"';

    optionsHtml += '>' + val.name + '</option>';
}

$('#projectid').append(optionsHtml).selectmenu('refresh', true);;

<强>解释

您只想为您的选项构建html,然后将所有选择附加一次。这将提高代码的性能,因为您只需追加一次,从而导致浏览器重绘一次。

这样做可以将选项构建为字符串。我不知道您如何确定选择哪个选项,但您应该能够更改if子句以满足您的需求。

您尝试了什么

$('select.projectid').find('option[value="val1"]').prop('selected', true);

这不起作用,因为你的选择器是错误的。您在此处使用id作为类:     $(&#39;#专案编号&#39)

$("#projectid").val($("#projectid option:first").val());

我不确定为什么这不起作用。但是你不希望这样做,因为很难动态地选择该选项。

修改

要在jQuery Mobile中选择更新其选择,您必须调用refresh。请参阅文档here