689 Stimmen

standardmäßig Option als leer auswählen

Ich habe eine sehr seltsame Anforderung, bei der ich keine Option standardmäßig im Dropdown-Menü in HTML ausgewählt haben muss. Jedoch,

Ich kann das nicht verwenden,

<select>
  <option></option>
  <option>Option 1</option>
  <option>Option 2</option>
  <option>Option 3</option>
</select>

Denn dafür muss ich eine Validierung durchführen, um die erste Option zu behandeln. Kann mir jemand helfen, dieses Ziel zu erreichen, ohne tatsächlich die erste Option als Teil des Select-Tags aufzunehmen?

1509voto

gam6itko Punkte 14463

Vielleicht ist dies hilfreich

<select>
  <option disabled selected value> -- select an option -- </option>
  <option>Option 1</option>
  <option>Option 2</option>
  <option>Option 3</option>
</select>

-- select an option -- Wird standardmäßig angezeigt. Wenn Sie jedoch eine Option auswählen, können Sie diese nicht mehr zurücksetzen.

Sie können es auch ausblenden, indem Sie ein leeres option

<option style="display:none">

damit er nicht mehr in der Liste erscheint.

Option 2

Wenn Sie kein CSS schreiben wollen und das gleiche Verhalten wie bei der obigen Lösung erwarten, verwenden Sie einfach:

<option hidden disabled selected value> -- select an option -- </option>

137voto

Matschie Punkte 1511

Sie könnten Javascript verwenden, um dies zu erreichen. Versuchen Sie den folgenden Code:

HTML

<select id="myDropdown">      
    <option>Option 1</option>     
    <option>Option 2</option>     
    <option>Option 3</option>     
</select> 

JS

document.getElementById("myDropdown").selectedIndex = -1;

oder JQuery

$("#myDropdown").prop("selectedIndex", -1);

52voto

GlenPeterson Punkte 4126

Heute (2015-02-25)

Dies ist gültiges HTML5 und sendet ein Leerzeichen (nicht ein Leerzeichen) an den Server:

<option label=" "></option>

Geprüfte Gültigkeit am http://validator.w3.org/check

Überprüftes Verhalten mit Win7(IE11 IE10 IE9 IE8 FF35 Safari5.1) Ubuntu14.10(Chrome40, FF35) OSX_Yosemite(Safari8, Chrome40) Android(Samsung-Galaxy-S5)

Auch das Folgende wird validiert heute , übergibt aber bei den meisten Browsern eine Art Leerzeichen an den Server (wahrscheinlich nicht erwünscht) und bei anderen ein Leerzeichen (Chrome40/Linux übergibt ein Leerzeichen):

<option>&#160;</option>

Zuvor (2013-08-02)

Meinen Notizen zufolge führte die Entität "Non-breaking-space" innerhalb der oben gezeigten Optionstags 2013 zu folgendem Fehler:

Fehler: W3C Markup Validaton Service (Public): Das erste untergeordnete option Element eines select-Elements mit einem required-Attribut und ohne ein multiple-Attribut, und dessen Größe 1 ist, muss entweder ein leeres value-Attribut haben, oder darf keinen Textinhalt haben.

Damals war ein normales Leerzeichen gültiges XHTML4 und wurde von jedem Browser als Leerzeichen an den Server gesendet:

<option> </option>

Zukunft

Es würde mich freuen, wenn die Spezifikation aktualisiert würde, um ausdrücklich eine leere Option zuzulassen. Vorzugsweise unter Verwendung der kürzesten Syntax. Eine der beiden folgenden Möglichkeiten wäre großartig:

<option />
<option></option>

Test Datei

<!DOCTYPE html>
<html>

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>Test</title>
</head>

<body>
  <form action="index.html" method="post">
    <select name="sel">
      <option label=" "></option>
    </select>
  </form>
</body>

</html>

42voto

Rafael Mori Punkte 721
<td><b>Field Label:</b><br>
    <select style='align:left; width:100%;' id='some_id' name='some_name'>
    <option hidden selected>Select one...</option>
    <option value='Value1'>OptLabel1</option>
    <option value='Value2'>OptLabel2</option>
    <option value='Value3'>OptLabel3</option></select>
</td>

Setzen Sie einfach "hidden" auf die Option, die Sie in der Dropdown-Liste ausblenden möchten.

18voto

Avatar Punkte 12579

Eine Lösung, die nur mit CSS funktioniert:

A: Inline-CSS

<select>
    <option style="display:none;"></option>
    <option>Option 1</option>
    <option>Option 2</option>
    <option>Option 3</option>
</select>

B: CSS-Stylesheet

Wenn Sie eine CSS-Datei zur Hand haben, können Sie die erste option verwenden:

select.first-opt-hidden option:first-of-type {
  display:none;
}

<select class="first-opt-hidden">
    <option></option>
    <option>Option 1</option>
    <option>Option 2</option>
    <option>Option 3</option>
</select>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X