2

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

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

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

<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>

我正在使用这个脚本

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

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

4

5 回答 5

11

如文档中所述,这对我有用:

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

这将选择意大利语;)

/编辑:

请记住,@Patrick M 有更高级的方法,他在我发布我的方法之前发布了他的方法;)

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

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

如您所见,id 是由 $('# websites1 _msa_2') 选择框的 id 加上选项项的 $('#websites1_msa_2 ' )索引生成的。

有点hacky但有效;)

所以你可以像这样定义一个 JavaScript-Function:

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 :)
于 2012-08-03T09:35:27.447 回答
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;
    }
}

其中之一应该工作。如果没有,你几乎只需要等待作者的回复。

于 2012-08-02T21:58:59.897 回答
1

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

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

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

document.getElementById("websites1").value = 'espanol';
于 2012-07-21T08:02:59.003 回答
0

使用selectedIndex. 请参阅此页面。选择控件有一个options属性,它基本上是一个选项元素数组。您选择的第一个元素是 options[0], 英语,所以:

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

您还可以使用以下命令默认选择第一个选项:

document.getElementById("websites1").options[0]
       .defaultSelected = true; //=> english by default
于 2012-07-21T08:00:32.810 回答
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);
于 2013-06-18T10:19:31.470 回答