如果我有
<select name="id[3]" id="attrib-3">
<option value="11">None</option>
<option value="13">White ($4.72)</option>
<option value="32">Black ($5.90)</option>
<option value="12">Blue ($5.90)</option>
</select>
我想根据另一个下拉列表更改价格,我有哪些选择? (假设我知道在这种情况下选项13应该是5.72,选项32应该是6.90,选项12应该是6.90,例如)。我在第一次下拉触发时有onchange,我知道如何到达attrib-3,但我不知道如何更改下拉列表的文本字段。
答案 0 :(得分:5)
您可以循环选项:
for(var i = 0, l = select.options.length; i < l; i++) {
var option = select.options[i];
if(option.value == "...") {
option.innerHTML = "...";
}
}
我会把它放在一个函数中并传递一个你搜索和替换的值,或者一个映射。类似的东西:
setOptionText(select, 'value', 'text');
// or
setOptionText(select, {'value': 'text', 'value': 'text', ...});
答案 1 :(得分:1)
Felix的解决方案可以解决问题,而且是纯JavaScript,但您可能会发现使用jQuery更容易。它具有诸如此类的简短功能。例如:
$('option[value="13"]').text('some text');
这是一个fiddle来证明这一点。
请注意,使用jQuery意味着页面需要加载库。这可能会影响性能。根据我的经验,通常jQuery的性能含义并不值得担心。它还具有允许您编写更少JS以实现相同目标的优势,如果您有大量脚本,则可能实际上提高性能。
答案 2 :(得分:0)
我使用条目“(Ohne)”查找所有下拉列表的方法,这是查找字段下拉列表的SharePoint默认值。它将找到所有下拉值“(Ohne)”并将它们重命名为“Bittewählen”,这意味着请选择英语。 使用SharePoint Designer将快速和脏的内容放入Web / List / Listname /NewForm.aspx。
对某些肮脏的解决方案可能有用:
<script language="javascript" type="text/javascript">
var dropDowns = document.getElementsByTagName('select');
for (var i = 0; i < dropDowns.length; i++) {
try{
if (dropDowns[i].options[0].text == '(Ohne)')
{
dropDowns[i].options[0].text = 'Bitte wählen';
}
}
catch(err)
{
// catches array exceptions occurred by <select> tags without <options>
}
}
</script>
sharepoint 2007 designer newform javascript lookupfield change value