如何从JavaScript中的选项菜单中选择

时间:2012-07-21 07:57:41

标签: javascript select-menu

当我做某事时,我需要能够将选择菜单中的某个选项更改为默认(开始)值。

例如,当我声明它时,英语是默认值。

如何使用代码而不是点击来更改它。

<form id="form1" name="form1" method="post" action="">
<select name="websites1" id="websites1" style="width:120px" tabindex="1">
    <option value="english" selected="selected"  title="images/us.gif">English</option>
    <option value="espanol" title="images/es.gif">Espanol</option>
    <option value="italian" title="images/it.gif">Italiano</option>
</select>
</form>

在身体标签中我声明:

<script type="text/javascript">
$(document).ready(function() {
$("body select").msDropDown();
});
</script>

我正在使用此SCRIPT

我已经尝试了所有这些下面的例子,但这对我没有好处。

我还可以做些什么来更改默认选择值。

5 个答案:

答案 0 :(得分:11)

这对我来说正如文档中提到的那样:

$('#websites1').msDropDown().data('dd').set('selectedIndex',2);

这将选择 italian ;)

/编辑:

请记住,@ Patrick M有一个更先进的方法,他在我发布之前发布了他的方法;)

如果您遇到像我一样的奇怪的CSS问题,请尝试这些未记录的内容:

$('#websites1_msa_2').click(); // this will also select the italian

正如您所看到的,ID是由$('#strong> websites1 _msa_2')生成的,其中包含selectbox的ID和$('#websites1_msa_ 2 ')索引期权项目。

有点hacky但有效;)

因此,您可以像这样定义一个JavaScript函数:

var jQueryImageDD_selectByName = function(name) {
  var children = $('#websites2_child').children();
  for(var i=0;i<children.length;i++) {
    var label = children[i].getElementsByTagName('span')[0].innerHTML;
    if(label === name) {
      children[i].click()
    }
  }
};

然后像这样使用它:

jQueryImageDD_selectByName('Italiano'); // will select Italiano :)

答案 1 :(得分:2)

他确实说过

  

您可以通过对象

设置几乎所有属性

所以,只要从他在该页面上提供的文档示例中猜测......我会考虑改编:

var oHandler = $('#comboboxid').msDropDown().data("dd");
oHandler.size([true|false]);
//Set or get  the size property

.value属性可能有效。因此,要将语言设置为意大利语,请尝试

var oHandler = $('#comboboxid').msDropDown().data("dd");
oHandler.value('italian');

// Or maybe the way to do it is this:
oHandler.set('value', 'italian');
// Or maybe 'value' shouldn't be in single quotes
//set property

如果这不起作用,您可以尝试循环遍历所有属性,获取并比较每个索引的值,并在找到时将所选索引设置为该属性名称。

var languageSelect = $('websites1');
var oHandler = $('#websites1').msDropDown().data("dd");
for(var index = 0; index < languageSelect.length; index++) {
    var option = oHandler.item([index]);
    if(option == 'italian') {
        oHandler.set("selectedIndex", index);
        break;
    }
}

其中一个应该有用。如果没有,你几乎不得不等待作者的回复。

答案 2 :(得分:1)

您可以使用selectedIndex更改所选选项的索引(0为第一个)

document.getElementById("websites1").selectedIndex = 1; //espanol

,或者您可以使用value更改值的文本(如果匹配,则会自动更改)。

document.getElementById("websites1").value = 'espanol';

答案 3 :(得分:0)

使用selectedIndex。见this page。 select控件具有options属性,它基本上是一个选项元素数组。您选择的第一个元素是选项[0],英语,所以:

document.getElementById("websites1").selectedIndex = 0; //=> english

您还可以使用以下方式选择第一个选项:

document.getElementById("websites1").options[0]
       .defaultSelected = true; //=> english by default

答案 4 :(得分:0)

工作选项(1.销毁msdropdown,2。按值选择,3。设置msdropdown)

将此代码放在js中的某处:

jQuery.fn.extend({
    setValue: function(value) {
    var dd = $(this).msDropdown().data("dd");
    dd.destroy();
    $(this).val(value);
    $(this).msDropdown();
  }
});

设定值:

$('#selectorOfmsDropDown').setValue('opt10');

或只是:

$("#selector").msDropdown().data("dd").setIndexByValue(newvalue);