我在文本輸入中使用占位符,效果很好。但是我也想為我的選擇框使用一個占位符。當然,我可以只使用這段代碼:
<select>
<option value="">Select your option</option>
<option value="hurr">Durr</option>
</select>
但是“選擇你的選項”是黑色的,而不是淺灰色的。所以我的解決方案可能是基于CSS的。jQuery也不錯。
這只會使下拉列表中的選項變灰(因此在單擊箭頭后):
option:first {
color: #999;
}
問題是:人們如何在選擇框中創建占位符?但是已經有人回答了,干杯。
使用該選項會導致所選值始終為灰色(即使在選擇了真實選項之后):
select {
color: #999;
}
一個非CSS - no JavaScript/jQuery答案:
<label>Option name
<select>
<option value="" disabled selected>Select your option</option>
<option value="hurr">Durr</option>
</select>
</label>
以下是(至少)在Firefox和Chrome中有效的內容:
<style>
select:invalid { color: gray; }
</style>
<form>
<select required>
<option value="" disabled selected hidden>Please Choose...</option>
<option value="0">Open when powered (most valves do this)</option>
<option value="1">Closed when powered, auto-opens when power is cut</option>
</select>
</form>
對于必填字段,現代瀏覽器中有一個純CSS解決方案:
select:required:invalid {
color: gray;
}
option[value=""][disabled] {
display: none;
}
option {
color: black;
}
<select required>
<option value="" disabled selected>Select something...</option>
<option value="1">One</option>
<option value="2">Two</option>
</select>
大概是這樣的:
HTML:
<select id="choice">
<option value="0" selected="selected">Choose...</option>
<option value="1">Something</option>
<option value="2">Something else</option>
<option value="3">Another choice</option>
</select>
CSS:
#choice option { color: black; }
.empty { color: gray; }
JavaScript:
$("#choice").change(function () {
if($(this).val() == "0") $(this).addClass("empty");
else $(this).removeClass("empty")
});
$("#choice").change();
工作實例:http://jsfiddle.net/Zmf6t/
我只是在一個選項中添加了一個隱藏屬性,如下圖所示。對我來說很好。
<select>
<option hidden>Sex</option>
<option>Male</option>
<option>Female</option>
</select>
下面的解決方案不需要任何JavaScript:
option[default] {
display: none;
}
<select>
<option value="" default selected>Select Your Age</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
不需要任何JavaScript或CSS,只需要三個屬性:
<select>
<option selected disabled hidden>Default Value</option>
<option>Value 1</option>
<option>Value 2</option>
<option>Value 3</option>
<option>Value 4</option>
</select>
它根本沒有顯示選項;它只是將選項的值設置為默認值。
但是,如果您不喜歡與其他顏色相同的占位符,您可以像這樣以內聯方式修復它:
<!DOCTYPE html>
<html>
<head>
<title>Placeholder for select tag drop-down menu</title>
</head>
<body onload="document.getElementById('mySelect').selectedIndex = 0">
<select id="mySelect" onchange="document.getElementById('mySelect').style.color = 'black'" style="color: gray; width: 150px;">
<option value="" hidden>Select your beverage</option> <!-- placeholder -->
<option value="water" style="color:black" >Water</option>
<option value="milk" style="color:black" >Milk</option>
<option value="soda" style="color:black" >Soda</option>
</select>
</body>
</html>
顯然,您可以將函數和至少選擇的CSS分離到單獨的文件中。
注意:onload函數糾正了一個刷新錯誤。
這里有一個對我有用的好辦法:
HTML:
<select class="place_holder dropdown">
<option selected="selected" style=" display: none;">Sort by</option>
<option>two</option>
<option>something</option>
<option>4</option>
<option>5</option>
</select>
CSS:
.place_holder {
color: gray;
}
option {
color: #000000;
}
JavaScript (jQuery):
jQuery(".dropdown").change(function () {
jQuery(this).removeClass("place_holder");
});
在客戶做出第一次選擇后,不再需要灰色,因此JavaScript代碼刪除了類place_holder。
作為Internet Explorer的一種變通方法,您可以再次添加place_holder類,以防再次選擇第一個選項。
用戶不應在選擇選項中看到占位符。我建議占位符選項使用hidden屬性,這個選項不需要selected屬性。你可以把它放在第一位。
select:not(:valid) {
color: #999;
}
<select required>
<option value="" hidden>Select your option</option>
<option value="0">First option</option>
<option value="1">Second option</option>
</select>
這里我修改了大衛的回答(公認回答)。在他的回答中,他在選項標簽上添加了禁用和選中屬性,但是當我們添加隱藏標簽時,效果會更好。
通過在選項標簽上添加一個額外的隱藏屬性,它將防止“選擇您的選項”選項在“Durr”選項被選擇后被重新選擇。
<select>
<option value="" disabled selected hidden>Select your option</option>
<option value="hurr">Durr</option>
</select>
select:focus option.holder {
display: none;
}
<select>
<option selected="selected" class="holder">Please select</option>
<option value="1">Option #1</option>
<option value="2">Option #2</option>
</select>
<select>
<option selected disabled hidden>Choose an Option</option>
<option>One</option>
<option>Two</option>
<option>Three</option>
</select>
我看到了正確答案的跡象,但綜合起來,這就是我的解決方案:
select {
color: grey;
}
option {
color: black;
}
option[default] {
display: none;
}
<select>
<option value="" default selected>Select your option</option>
<option value="hurr">Durr</option>
</select>
HTML中有一個很酷的屬性,你可以用它來為選擇屬性創建一個占位符 在我的情況下,我使用下面的代碼,你可以根據你的要求改變它
<select ref={relationship} required className="sellertype">
<option value="" disabled selected hidden>Select Your Seller Type</option>
<option value="1">Importer</option>
<option value="2">Exporter</option>
<option value="3">Local Seller</option>
<option value="4">Local Buyer</option>
</select>
現在& gt;選擇你的賣家類型將作為占位符
如果您使用的是Angular,就像這樣:
<select>
<option [ngValue]="undefined" disabled selected>Select your option</option>
<option [ngValue]="hurr">Durr</option>
</select>
這個HTML + CSS解決方案對我很有效:
form select:invalid {
color: gray;
}
form select option:first-child {
color: gray;
}
form select:invalid option:not(:first-child) {
color: black;
}
<form>
<select required>
<option value="">Select Planet...</option>
<option value="earth">Earth</option>
<option value="pandora">Pandora</option>
</select>
</form>
您可以將第一個選項的顏色設置為灰色,將其display設置為none,將select的顏色設置為灰色,并向其添加一個輸入事件偵聽器,將其顏色設置為黑色。
select > option:not(:first-of-type) {
color: black;
}
<select style='color:gray' oninput='style.color="black"'>
<option style='display:none'>
Choose an option
</option>
<option>
1
</option>
<option>
2
</option>
<option>
3
</option>
</select>
JavaScript中的另一種可能性:
$('body').on('change', 'select', function (ev){
if($(this).find('option:selected').val() == ""){
$(this).css('color', '#999');
$(this).children().css('color', 'black');
}
else {
$(this).css('color', 'black');
$(this).children().css('color', 'black');
}
});
JSFiddle
基于MattW的回答,在做出有效選擇后,您可以使選擇占位符選項在下拉菜單中可見,只在占位符保持選中時有條件地隱藏它(因此select是:invalid)。
select:required:invalid {
color: gray;
}
select:invalid > option[value=""][disabled] {
display: none;
}
option {
color: black;
}
<select required>
<option value="" disabled selected>Select something...</option>
<option value="1">One</option>
<option value="2">Two</option>
</select>
這對我很有效:
<select class="form-control">
<option value="" readonly="true" hidden="true" selected>Select your option</option>
<option value="1">Something</option>
<option value="2">Something else</option>
<option value="3">Another choice</option>
</select>
適用于2023年的解決方案,具有選擇器:
select:has(option:disabled:checked[hidden]) {
color: gray;
}
select option {
color: black;
}
<select>
<option selected disabled hidden>Choose</option>
<option>One</option>
<option>Two</option>
<option>Three</option>
</select>
以下解決方案模擬了與輸入相關的占位符[type = & quot;文本& quot]元素:
$('.example').change(function () {
$(this).css('color', $(this).val() === '' ? '#999' : '#555');
});
.example {
color: #999;
}
.example > option {
color: #555;
}
.example > option[value=""] {
color: #999;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="example">
<option value="">Select Option</option>
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
</select>
我想選擇是灰色的,直到被選中,所以這段HTML:
<select>
<option value="" disabled selected>Select your option</option>
<option value="hurr">Durr</option>
</select>
我添加了這些CSS定義:
select { color: grey; }
select:valid { color: black; }
它在Chrome / Safari中可以正常工作,也許在其他瀏覽器中也可以,但我還沒有檢查過。
這是一個運行良好的CSS解決方案。內容被添加到包含元素之后(并且相對于容器絕對定位)(via :after pseudo-class)。
它從我在使用指令的地方定義的占位符屬性(attr(placeholder))中獲取文本。另一個關鍵因素是指針事件:none——這允許占位符文本上的單擊傳遞到select。否則,如果用戶單擊文本,它不會下拉。
我加上了。在我的select指令中我自己清空了類,但是通常我發現angular增加/移除。ng-對我來說是空的(我假設是因為我在代碼示例中注入了Angular的1.2版本)。
(該示例還演示了如何在AngularJS中包裝HTML元素以創建您自己的自定義輸入)
var app = angular.module("soDemo", []);
app.controller("soDemoController", function($scope) {
var vm = {};
vm.names = [{
id: 1,
name: 'Jon'
},
{
id: 2,
name: 'Joe'
}, {
id: 3,
name: 'Bob'
}, {
id: 4,
name: 'Jane'
}
];
vm.nameId;
$scope.vm = vm;
});
app.directive('soSelect', function soSelect() {
var directive = {
restrict: 'E',
require: 'ngModel',
scope: {
'valueProperty': '@',
'displayProperty': '@',
'modelProperty': '=',
'source': '=',
},
link: link,
template: getTemplate
};
return directive;
/////////////////////////////////
function link(scope, element, attrs, ngModelController) {
init();
return;
///////////// IMPLEMENTATION
function init() {
initDataBinding();
}
function initDataBinding() {
ngModelController.$render = function() {
if (scope.model === ngModelController.$viewValue) return;
scope.model = ngModelController.$viewValue;
}
scope.$watch('model', function(newValue) {
if (newValue === undefined) {
element.addClass('empty');
return;
}
element.removeClass('empty');
ngModelController.$setViewValue(newValue);
});
}
}
function getTemplate(element, attrs) {
var attributes = [
'ng-model="model"',
'ng-required="true"'
];
if (angular.isDefined(attrs.placeholder)) {
attributes.push('placeholder="{{placeholder}}"');
}
var ngOptions = '';
if (angular.isDefined(attrs.valueProperty)) {
ngOptions += 'item.' + attrs.valueProperty + ' as ';
}
ngOptions += 'item.' + attrs.displayProperty + ' for item in source';
ngOptions += '"';
attributes.push('ng-options="' + ngOptions + '"');
var html = '<select ' + attributes.join(' ') + '></select>';
return html;
}
});
so-select {
position: relative;
}
so-select select {
font-family: 'Helvetica';
display: inline-block;
height: 24px;
width: 200px;
padding: 0 1px;
font-size: 12px;
color: #222;
border: 1px solid #c7c7c7;
border-radius: 4px;
}
so-select.empty:before {
font-family: 'Helvetica';
font-size: 12px;
content: attr(placeholder);
position: absolute;
pointer-events: none;
left: 6px;
top: 3px;
z-index: 0;
color: #888;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="soDemo" ng-controller="soDemoController">
<so-select value-property="id" display-property="name" source="vm.names" ng-model="vm.nameId" placeholder="(select name)"></so-select>
</div>
我不能讓這些工作,因為對我來說,這是(1)不需要的,(2)需要返回到默認的可選選項。因此,如果您使用jQuery,這里有一個非常棘手的選項:
var $selects = $('select');
$selects.change(function () {
var option = $('option:default', this);
if(option && option.is(':selected')) {
$(this).css('color', '#999');
}
else {
$(this).css('color', '#555');
}
});
$selects.each(function() {
$(this).change();
});
option {
color: #555;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="in-op">
<option default selected>Select Option</option>
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
</select>
我不滿足于只有HTML/CSS的解決方案,所以我決定使用JavaScript創建一個自定義選擇。
這是我在過去30分鐘內寫的東西,因此可以進一步改進。
你所要做的就是創建一個簡單的帶有少量數據屬性的列表。代碼會自動將列表變成可選擇的下拉列表。它還添加了一個h idden輸入來保存選定的值,因此可以在表單中使用。
輸入:
<ul class="select" data-placeholder="Role" data-name="role">
<li data-value="admin">Administrator</li>
<li data-value="mod">Moderator</li>
<li data-value="user">User</li>
</ul>
輸出:
<div class="ul-select-container">
<input type="hidden" name="role" class="hidden">
<div class="selected placeholder">
<span class="text">Role</span>
<span class="icon">▼</span>
</div>
<ul class="select" data-placeholder="Role" data-name="role">
<li class="placeholder">Role</li>
<li data-value="admin">Administrator</li>
<li data-value="mod">Moderator</li>
<li data-value="user">User</li>
</ul>
</div>
應該是占位符的項目的文本是灰色的。占位符是可選的,以防用戶想要恢復他/她的選擇。同樣使用CSS,select的所有缺點都可以被克服(例如,不能對選項進行樣式化)。
// Helper function to create elements faster/easier
// https://github.com/akinuri/js-lib/blob/master/element.js
var elem = function(tagName, attributes, children, isHTML) {
let parent;
if (typeof tagName == "string") {
parent = document.createElement(tagName);
} else if (tagName instanceof HTMLElement) {
parent = tagName;
}
if (attributes) {
for (let attribute in attributes) {
parent.setAttribute(attribute, attributes[attribute]);
}
}
var isHTML = isHTML || null;
if (children || children == 0) {
elem.append(parent, children, isHTML);
}
return parent;
};
elem.append = function(parent, children, isHTML) {
if (parent instanceof HTMLTextAreaElement || parent instanceof HTMLInputElement) {
if (children instanceof Text || typeof children == "string" || typeof children == "number") {
parent.value = children;
} else if (children instanceof Array) {
children.forEach(function(child) {
elem.append(parent, child);
});
} else if (typeof children == "function") {
elem.append(parent, children());
}
} else {
if (children instanceof HTMLElement || children instanceof Text) {
parent.appendChild(children);
} else if (typeof children == "string" || typeof children == "number") {
if (isHTML) {
parent.innerHTML += children;
} else {
parent.appendChild(document.createTextNode(children));
}
} else if (children instanceof Array) {
children.forEach(function(child) {
elem.append(parent, child);
});
} else if (typeof children == "function") {
elem.append(parent, children());
}
}
};
// Initialize all selects on the page
$("ul.select").each(function() {
var parent = this.parentElement;
var refElem = this.nextElementSibling;
var container = elem("div", {"class": "ul-select-container"});
var hidden = elem("input", {"type": "hidden", "name": this.dataset.name, "class": "hidden"});
var selected = elem("div", {"class": "selected placeholder"}, [
elem("span", {"class": "text"}, this.dataset.placeholder),
elem("span", {"class": "icon"}, "▼", true),
]);
var placeholder = elem("li", {"class": "placeholder"}, this.dataset.placeholder);
this.insertBefore(placeholder, this.children[0]);
container.appendChild(hidden);
container.appendChild(selected);
container.appendChild(this);
parent.insertBefore(container, refElem);
});
// Update necessary elements with the selected option
$(".ul-select-container ul li").on("click", function() {
var text = this.innerText;
var value = this.dataset.value || "";
var selected = this.parentElement.previousElementSibling;
var hidden = selected.previousElementSibling;
hidden.value = selected.dataset.value = value;
selected.children[0].innerText = text;
if (this.classList.contains("placeholder")) {
selected.classList.add("placeholder");
} else {
selected.classList.remove("placeholder");
}
selected.parentElement.classList.remove("visible");
});
// Open select dropdown
$(".ul-select-container .selected").on("click", function() {
if (this.parentElement.classList.contains("visible")) {
this.parentElement.classList.remove("visible");
} else {
this.parentElement.classList.add("visible");
}
});
// Close select when focus is lost
$(document).on("click", function(e) {
var container = $(e.target).closest(".ul-select-container");
if (container.length == 0) {
$(".ul-select-container.visible").removeClass("visible");
}
});
.ul-select-container {
width: 200px;
display: table;
position: relative;
margin: 1em 0;
}
.ul-select-container.visible ul {
display: block;
padding: 0;
list-style: none;
margin: 0;
}
.ul-select-container ul {
background-color: white;
border: 1px solid hsla(0, 0%, 60%);
border-top: none;
-webkit-user-select: none;
display: none;
position: absolute;
width: 100%;
z-index: 999;
}
.ul-select-container ul li {
padding: 2px 5px;
}
.ul-select-container ul li.placeholder {
opacity: 0.5;
}
.ul-select-container ul li:hover {
background-color: dodgerblue;
color: white;
}
.ul-select-container ul li.placeholder:hover {
background-color: rgba(0, 0, 0, .1);
color: initial;
}
.ul-select-container .selected {
background-color: white;
padding: 3px 10px 4px;
padding: 2px 5px;
border: 1px solid hsla(0, 0%, 60%);
-webkit-user-select: none;
}
.ul-select-container .selected {
display: flex;
justify-content: space-between;
}
.ul-select-container .selected.placeholder .text {
color: rgba(0, 0, 0, .5);
}
.ul-select-container .selected .icon {
font-size: .7em;
display: flex;
align-items: center;
opacity: 0.8;
}
.ul-select-container:hover .selected {
border: 1px solid hsla(0, 0%, 30%);
}
.ul-select-container:hover .selected .icon {
opacity: 1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="select" data-placeholder="Role" data-name="role">
<li data-value="admin">Administrator</li>
<li data-value="mod">Moderator</li>
<li data-value="user">User</li>
</ul>
<ul class="select" data-placeholder="Sex" data-name="sex">
<li data-value="male">Male</li>
<li data-value="female">Female</li>
</ul>
我喜歡這個被接受的解決方案,它在沒有JavaScript的情況下也能很好地工作。
我只想補充一下我是如何將這個答案用于一個受控選擇的React組件的,因為我花了幾次嘗試才弄明白。合并react-select并使用它確實很簡單,但是除非您需要這個存儲庫提供的驚人功能,我不需要這個項目,否則沒有必要在我的包中添加更多的千字節。注意,react-select通過各種輸入和html元素的復雜系統處理選擇中的占位符。
在React中,對于受控組件,不能將選定屬性添加到選項中。React通過select本身的value屬性以及一個change處理程序來處理select的狀態,其中的值應該與選項本身的value屬性之一相匹配。
例如,舉例來說
<select value={this.state.selectValue} onChange={this.handleChange} required={true}>
{options}
</select>
既然將選擇的屬性添加到一個選項中是不合適的,而且事實上會拋出一個錯誤,那么該怎么辦呢?
只要你想一想,答案就很簡單。因為我們希望第一個選項被選中、禁用和隱藏,所以我們需要做三件事:
將隱藏和禁用的屬性添加到第一個定義的選項中。 將第一個選項的值設置為空字符串。 將select的值初始化為空字符串。
state = { selectValue = "" } // State or props or their equivalent
// In the render function
<select value={this.state.selectValue} onChange={this.handleChange} required={true}>
<option key="someKey" value="" disabled="disabled" hidden="hidden">Select from Below</option>
{renderOptions()}
</select>
現在,您可以按照上面的指示來設置選擇的樣式(如果您愿意,也可以通過類名來設置)。
select:invalid { color: gray; }
您需要表單驗證,現代瀏覽器從頭開始提供這種功能。
因此,您不需要擔心用戶無法選擇該字段。因為當他這么做的時候,瀏覽器驗證會告訴他,這是一個錯誤的選擇。
瀏覽器內置了驗證函數checkValidity()。
Bootstrap也有一個很好的例子。
超文本標記語言
<form class="needs-validation">
<select required>
<option value="">Please select an option</option>
<option value="1">Foo</option>
<option value="2">Bar</option>
</select>
<form>
java描述語言
form = document.getElementByClassName('needs-validation');
if(form.checkValidity() === true) {
//form validation succeeded
} else {
//form validation failed
}
由于本主題中提供的答案具有不同的樣式和功能,下表闡明了所提供的HTML、HTML+CSS和HTML+CSS+Javascript解決方案的樣式和適用的表單邏輯。
我不得不使用代碼格式化,因為出于某種原因,標記中不允許使用表格。 將使用代碼片段提供一個HTML表格來解決表格限制。
我已經將這篇文章標記為社區wiki,因此任何人都可以詳細描述新文章,盡管請將JQuery、React、Angular、CoffeeScript等添加到替代文章中,以保持表格簡單。
Technologies | Styling |
Post | CSS | Java- | Select: Placeholder | Select: valid option | Option: placeholder | Option: valid option |
ID | | script | Color | Validation | Color | Required | Visibility | Selectable | Color | Cond. formatting | Color | Cond. formatting |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
41167307 | No | No | Black | Invalid | Black | Yes | Visible | No | Grey | No | Black | No |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
50200912 | No | No | Black | Valid | Black | No | Invisible | N/A | N/A | No | Black | No |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
5859221 | No | No | Black | Valid | Black | No | Visible | No | Grey | No | Black | No |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
38120777 | No | No | Black | Valid | Black | No | Invisible | N/A | N/A | No | Black | No |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
54860799 | Yes | No | Grey | Invalid | Black | Yes | Invisible | N/A | N/A | No | Black | No |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
52661024 | Yes | No | Grey | Invalid | Black | Yes | Invisible | N/A | N/A | No | Black | select:invalid{Grey} |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
8442831 | Yes | No | Grey | Invalid | Black | Yes | Invisible | N/A | N/A | No | Black | select:invalid{Grey} |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
29806043 | Yes | No | Grey | Invalid | Black | Yes | Invisible | N/A | N/A | No | Black | No |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
61966461 | Yes | No | Grey | Invalid | Black | Yes | Invisible | N/A | N/A | select:valid{visible} | Black | No |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
44406771 | Yes | No | Grey | Invalid | Grey | No | Visible | No | Grey | No | Black | select:invalid{Grey} |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
40603035 | Yes | No | Black | Valid | Black | No | Invisible | N/A | N/A | No | Black | No |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
22994211 | Yes | No | Grey | Valid | Black | No | Invisible | N/A | N/A | No | Black | No |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
21722343 | Yes | No | Grey | Valid | Grey | No | Invisible | N/A | N/A | No | Black | No |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
48960650 | Yes | Yes | Grey | Invalid | Black | No | Invisible | N/A | N/A | No | Black | No |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
5805194 | Yes | Yes | Grey | Valid | Black | No | Visible | Yes | Black | No | Black | No |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
50840409 | Yes | Yes | Grey | Valid | Black | Yes | Visible | Yes | Grey | No | Black | No
您可以不使用JavaScript而只使用HTML來實現這一點,您需要設置默認的選擇選項disabled = & quot"并且選擇了= & quot"并選擇標簽要求= & quot"。瀏覽器不允許用戶在沒有選擇選項的情況下提交表單。
<form action="" method="POST">
<select name="in-op" required="">
<option disabled="" selected="">Select Option</option>
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
</select>
<input type="submit" value="Submit">
</form>