jquery 选择标签的占位符?

vyu0f0g1  于 2023-08-04  发布在  jQuery
关注(0)|答案(5)|浏览(143)

我想知道如何用select标签实现placeholder效果,如果有默认的选择选项,比如“请选择一个选项:”,那就太好了。
我已经尝试了一些变化,他们不工作,到目前为止,我相信这是可以实现的,因为我看到它的地方(不记得在哪里)。
我试过这个:
第一章

<fieldset>
            <select data-placeholder="Please select a product" id="s1" class="global">
                <option value="Some">Some</option>
                <option value="Slower">Slower</option>
                <option value="Slow">Slow</option>
                <option value="Fast">Fast</option>
                <option value="Faster">Faster</option>
            </select>
</fieldset>

字符串
(二)、

<fieldset>
            <select id="s1" class="global">
                <option data-placeholder="true"  value="Some">Some</option>
                <option value="Slower">Slower</option>
                <option value="Slow">Slow</option>
                <option value="Fast">Fast</option>
                <option value="Faster">Faster</option>
            </select>
</fieldset>


两者都不起作用,也许有一个jQuery方法可以做到这一点?

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

xzv2uavs

xzv2uavs1#

这里有两种类型的占位符,可重新选择和隐藏:
演示:http://jsfiddle.net/lachlan/FuNmc/
可重新选择的占位符:

<select>
    <option value="" selected>Please select</option>
    <option value="1">Item 1</option>
    <option value="2">Item 2</option>
    <option value="3">Item 3</option>
</select>

字符串
隐藏占位符:

<select class="empty">
    <option value="" selected disabled>Please select</option>
    <option value="1">Item 1</option>
    <option value="2">Item 2</option>
    <option value="3">Item 3</option>
</select>


CSS改变第一个元素的颜色:

select option { color: black; }
select option:first-child { color: grey; }
select.empty { color: grey; }
/* Hidden placeholder */
select option[disabled]:first-child { display: none; }


还有一个小jQuery来切换选择后的字体颜色:

// Applies to all select boxes that have no value for their first option
$("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/8442831/1196148-隐藏占位符

qxgroojn

qxgroojn2#

我已经按照@Truth的建议构建了一个简单的演示:http://jsfiddle.net/6QnXF/

(function($){
    $('#myAwesomeSelect').change(function(){
       if( !$(this).data('removedPlaceHolder'))
       {
          $(this).find('option:first').remove();
          $(this).data('removedPlaceHolder', true); 
       }
    });
})(jQuery);

字符串
我希望这对你有用。

41zrol4v

41zrol4v3#

据我所知,没有办法单独使用HTML(尽管这会很好)。你可以用一个选中的选项来伪造它(我知道你不想要它,但这可能是唯一的方法)。选择另一个选项后,可以将其删除。

**Here's a working example of what I describe.**第一个字符

r9f1avp5

r9f1avp54#

我的猜测是,您将不得不为选择框构建自己的解决方案。类似于一系列充当选项的div,单击这些选项时会显示它们的值并将其插入到隐藏的输入字段中。

p5fdfcr1

p5fdfcr15#

试试这个:在css中添加这个(样式表):

select:required:invalid {
 color: #c4c4c4;
}
option[value=""][disabled] {
 display: none;
}
option {
 color: #232423;
}

字符串
HTML:

<select required>
 <option value="" disabled selected>Select a color</option>
 <option value="red">Red</option>
 <option value="green">Green</option>

相关问题