您可以在此处查看我正在处理的表单:
http://www.escalateinternet.com/free-quote.php
这是下拉预算的代码:
<td><select id="budget" style="width:420px;">
<option value="">Choose Your Budget</option>
<option value="250">$250-$500 Per Month</option>
<option value="500">$500-$750 Per Month</option>
<option value="750">$750-$1000 Per Month</option>
<option value="100">$1000-$1500 Per Month</option>
<option value="1500">$1500-$2500 Per Month</option>
<option value="2500">$2500-$5000 Per Month</option>
<option value="5000">$5000-$7500 Per Month</option>
<option value="7500">$7500-$10000 Per Month</option>
<option value="10000">$10,000 or More Per Month</option>
</select></td>
我如何才能使“选择您的预算”与默认情况下其他占位符的灰色文本相同,然后在选择预算时文本为较暗的颜色。我只是想让它与表格的其余部分使用的配色方案相匹配......
答案 0 :(得分:8)
How do I make a placeholder for a 'select' box?
可能重复缺点是,select
元素不支持占位符,而你想要做的事情在css中是不可能完成的。然而;一些简单的JS可以帮助我们。
(我假设您将使用jQuery)
$(document).ready(function(){
$('select').on('change', function(){ //attach event handler to select's change event.
//use a more specific selector
if ($(this).val() === ""){ //checking to see which option has been picked
$(this).addClass('unselected');
} else { // add or remove class accordingly
$(this).removeClass('unselected');
}
});
});
奖金编辑:if / else块可以重构为一行(参见jquery .toggleClass()
):
$(this).toggleClass('unselected', $(this).val() === "");
我还建议给它disabled
属性。然后,您可以添加如下样式:
select{
color: black;
}
select.unselected{
color: gray;
}
//edit: you might want to do this to make it that bit nicer:
select option:first-child{
display: none;
}
不要忘记为select
元素提供unselected
的初始类。
希望这有帮助!
答案 1 :(得分:1)
在不使用jQuery的情况下执行此操作的简单方法。
select {
color: #aaa; /* default unselected color */
}
select:focus {
color: red; /* color when focused */
}
#budget option:checked{
color: red; /* color when selected but not focused */
}
答案 2 :(得分:1)
这是我使用占位符文本颜色为浅灰色,普通文本为白色,背景为黑色的方式。焦点移开后,所选选项仍将为白色。
select {
color: #fff!important;
background-color: #000!important;
}
select:invalid {
color: #535353!important;
}
select:focus {
color: #fff!important;
}
答案 3 :(得分:0)
这是一种纯JavaScript方式(根据Bill的回答),因为仍然没有纯粹的html / css方式(据我所知)。
编辑:您可以在占位符选项上设置Disabled属性,但是并非所有浏览器都支持此属性,并且您不能根据options属性设置样式。
[].forEach.call(document.querySelectorAll('select'), function(currentSelect) {
// Trigger placeholder method for the first time
updatePlaceholder(currentSelect);
// Bind change event to every select that is found on the page.
currentSelect.addEventListener('change', function() {
updatePlaceholder(this);
});
});
function updatePlaceholder(select) {
select.classList.toggle('unselected', !select[select.selectedIndex].value);
}
select.unselected {
opacity: .5;
filter: grayscale();
}
<select id="budget" style="width:420px;">
<option value="">Choose Your Budget</option>
<option value="250">$250-$500 Per Month</option>
<option value="500">$500-$750 Per Month</option>
<option value="750">$750-$1000 Per Month</option>
<option value="100">$1000-$1500 Per Month</option>
<option value="1500">$1500-$2500 Per Month</option>
<option value="2500">$2500-$5000 Per Month</option>
<option value="5000">$5000-$7500 Per Month</option>
<option value="7500">$7500-$10000 Per Month</option>
<option value="10000">$10,000 or More Per Month</option>
</select>
答案 4 :(得分:0)
如果下拉列表是 required 字段,则可以使用:invalid
伪类。 According to MDN:
:invalid
CSS伪类表示其内容无法验证的任何<input>
或其他<form>
元素。
这意味着,当所选选项的值为空(即value=""
)时,:invalid
伪类选择器将在<select>
元素上处于活动状态,因为需要一个值。请参阅下面的示例:
/* 1 - Disable default browser styling */
select {
border: 1px solid #999;
}
/* 2 - Style default state using the :invalid pseudo-class */
select:invalid {
color: red;
}
<select name="color" required>
<option value="" selected>Select a size</option>
<option value="sm">Small</option>
<option value="md">Medium</option>
<option value="lg">Large</option>
</select>
答案 5 :(得分:-3)
您可以使用伪类option:checked
<style>
#budget option:checked{
color:red;
}
</style>
看一下这个演示:http://jsbin.com/gilip/1