一个 `select` 标签的占位符?

18 浏览
0 Comments

一个 `select` 标签的占位符?

我想知道如何在select标签中实现placeholder效果,希望默认选中的选项可以是"请选择一个选项:"。我尝试了一些不同的方式,但都没有成功,我确信这是可以实现的,因为我在某个地方见过(记不清在哪里了)。我尝试了以下两种方式:

1)

2)

两种方式都没有生效,也许有一种jQuery方法可以实现这个效果。

快速编辑:我不想只是禁用其中一个选项并将其设置为selected,因为它仍然会显示在下拉列表中与其他项目一起。

0
0 Comments

问题出现的原因是在Firefox和IE9中,``标签创建下拉菜单时,我们经常需要在默认情况下显示一条提示信息,告诉用户需要选择一个选项。然而,在HTML中,并没有直接支持这样的功能。因此,我们需要通过其他方法来实现这个功能。

为了解决这个问题,我们可以使用两种不同的方法来创建占位符。一种是可重新选择的占位符,另一种是隐藏的占位符。

可重新选择的占位符可以在用户选择了一个选项后重新显示,并且可以再次选择。我们可以通过将一个默认的选项设置为被选中状态来实现这个功能。例如,我们可以在`

隐藏的占位符在初始状态下被隐藏起来,只有在用户选择了一个选项后才会显示。我们可以通过在``标签中添加以下代码:


为了改变第一项的颜色,我们可以使用CSS来设置样式。我们可以使用以下代码来改变第一项的颜色为灰色:

select option { color: black; }
select option:first-child { color: grey; }
select.empty { color: grey; }

为了在选择后切换字体颜色,我们可以使用jQuery来实现。我们可以使用以下代码来为没有值的第一个选项的所有下拉菜单添加一个`empty`类,并在选择后切换这个类:

$("select:has(option[value=]:first-child)").on('change', function() {
    $(this).toggleClass("empty", $.inArray($(this).val(), ['', null]) >= 0);
}).trigger('change');

通过这些方法,我们可以实现一个占位符功能,使用户能够清楚地知道需要选择一个选项。

参考资料:

- [https://stackoverflow.com/a/5805194/1196148](https://stackoverflow.com/a/5805194/1196148) - re-selectable placeholder

- [https://stackoverflow.com/a/8442831/1196148](https://stackoverflow.com/a/8442831/1196148) - hidden placeholder

0
0 Comments

在HTML中,没有一种方法可以实现(A Placeholder for the `select` tag?),虽然这将是很好的。你可以通过设置一个默认选项来模拟它(我知道你不想要,但这可能是唯一的方法)。一旦选择了另一个选项,你就可以移除它。

但是,Chrome 22显示的占位符文本与其他选项的颜色相同,而Firefox 14则按预期显示灰色的占位符文本。

解决这个问题的方法是使用JavaScript。你可以使用JavaScript来监听select元素的change事件,并在选项改变时切换占位符文本的样式。

下面是一个示例代码,展示了如何使用JavaScript来实现这个功能:



在上面的示例中,我们首先给select元素设置了一个默认选项,其value属性为空并且被禁用和选中。然后,我们通过JavaScript监听select元素的change事件,并根据选项的值来切换占位符文本的颜色。

当选项的值为空时,我们将select元素的颜色设置为灰色;当选项的值发生改变时,我们将select元素的颜色设置为黑色。

通过这种方式,我们可以实现类似占位符文本的效果,并在选项改变时改变占位符文本的样式。

0