javascript - 如何自定义<select>显示值?

标签 javascript html select

我有一个简单的选择:

<select>
    <option value="1" displayvalue="text 1">Very very long text 1</option>
    <option value="2" displayvalue="text 1">Very very long text 2</option>
    <option value="3" displayvalue="text 1">Very very long text 3</option>
</select>

当选择下拉菜单打开时,您通常会看到“非常非常长的文本”。

但是,每当我选择一个选项并关闭下拉菜单时,我希望 displayvalue 属性显示在选择框中而不是选项的内部文本(即 “text1”).

我正在寻找的是这样的东西:

option.onchange = function(){
    this.text = this.selectedOption.getAttribute("displayvalue");
}

我似乎也无法找到一个 option 属性,它只允许我更改显示的文本,而不是它的实际值。

最佳答案

使用 selectedindex 定位选定的选项

function gettext(sel) {
  alert(sel.options[sel.selectedIndex].getAttribute('displayvalue'));
}
<select onchange="gettext(this)">
    <option value="1" displayvalue="text 1">Very very long text 1</option>
    <option value="2" displayvalue="text 1" selected>Very very long text 2</option>
    <option value="3" displayvalue="text 1">Very very long text 3</option>
</select>

使用 Dom 监听器

$elem = document.querySelector('select')
$elem.addEventListener('change', gettext)

function gettext() {
  console.log(this.options[this.selectedIndex].getAttribute('displayvalue'));
}
<select>
  <option value="1" displayvalue="text 1">Very very long text 1</option>
  <option value="2" displayvalue="text 2" selected>Very very long text 2</option>
  <option value="3" displayvalue="text 3">Very very long text 3</option>
</select>

关于javascript - 如何自定义<select>显示值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55950215/

相关文章:

javascript - jquery 发布表单不起作用

javascript - 如何缩短自动发布的文本长度

javascript - 无法从 Javascript 获取发布数据到 PHP

html - 如何在点击时动态添加类并在 2 秒后将其删除?

javascript - 拖放的几个问题

mysql - 如何正确连接 MYSQL 中可能没有匹配结果的列?

javascript - PHP 和 MySQL 的多列下拉菜单

javascript - 使用 jQuery 选择类的父元素

html - 带有 ‘stroke-dashoffset’ CSS 动画的 SVG 文本在 Firefox 中不起作用

Android Sqlite FTS3 如何选择开头的单词?