# 39, & # 39 의 how do I make a 자리표시자 select&. 기입란?

39 m, i& 자리표시자 사용하여 텍스트 투입물 원하는거요 apc® 아웃해야 그냥 그랬다고. 그러나 I&; d # 39 을 사용하는 등 자리표시자 내 셀레스상자레스 잘 알려져 있다. 당연히 이 코드를 사용하여 됩니다.

<select>
    <option value="">Select your option</option>
    <option value="hurr">Durr</option>
</select>

그러나 # 39, & # 39 option& 선택. 대신 라이트그레이 검은색으로 있다. 그래서 제 css 기반 솔루션을 될 수 있다는 것. jQuery 는 너무 좋아요.

이 때문에 이 옵션을 디렉토리에만 그레이요 드롭다운에서 (그러하매 클하면 화살표):

option:first {
    color: #999;
}

문제는: 사람들이 어떻게 만들 자리표시자 셀레스상자레스? 하지만, 이미 답변됨 건배해요

그 결과 및 사용 중인 선택한 값은 항상 그레이요 (심지어 선택한 후 실제 옵션인지:

select {
    color: #999;
}
해결책

아니 자바스크립트 / jQuery 는 비사양 css 대답:

<! - begin 스니핏: js 숨기십시오: &gt 거짓값 -;


<select>
    Select your option
    Durr
해설 (20)

그냥 Firefox 에서 작동됨 here& # 39 에 걸쳐 있으며, 이 질문에 어떤 발견했다, 크롬 (최소한):

<! - begin 스니핏: html 숨기십시오: &gt 거짓값 -;

<! - 언어: &gt html 로 -;

&lt style>; 잘못된 선택 {색상: 회색. } &lt /style>; &lt form>; &lt, required&gt 선택합니다. 옵션 값에 = &quot &quot <;; 비활성화됨 선택함 hidden&gt desktopplatforms Choose.&lt /option>;; 값 = &quot 0&quot &gt &lt 옵션이 있습니다. (가장 밸브 이렇게) 의 경우,, 오픈 &lt /option>; &lt &quot 1&quot &gt 때, 전원,, 옵션 값에 = 단힌 자동 열었든 전원이 공급되면 cut&lt /option>; &lt /select>; &lt /form>;

끝 - &lt 스니핏 >;!

, ',' 이 이 옵션을 모두 갖춘 option&gt 비활성화됨 정지점으로 &lt 마우스와 키보드를 사용하여 & # 39, 그냥 뽑힌 반면, ',' 아직 키보드를 통해 사용자가 display:none& # 39 를 내렸다. 이 '& # 39, & # 39, 스타일,' 그냥 # 39 는 display:none& 나열하십시오 기입란 여바바 nice& # 39;.

참고: &Quot 대한 속성 값을 사용하여 '빈' placeholder"; 옵션을 사용하면 검증 (필요한 속성),, 만일 이 옵션 isn& placeholder&quot &quot 해결하기 위해 갖고 있는 것이 아니라, 브라우저가 # 39, 별로 변화가 필요한 프롬프트합니다 목록에서 옵션을 선택할 수 있습니다.

  • 업데이트 (7월 2015년 :*)

이 방법은 apc® 확인한 다음 브라우저:

  • 구글 크롬 - 43.0.2357.132 v. Mozilla Firefox 39.0 - v -
  • 사파리 - v 8.0.7 (자리표시자 표시되는지를 선택할 수 있는 드롭다운이 아니다)
  • Microsoft Internet Explorer - v 11 (자리표시자 표시되어 있지만 드롭다운이 를 선택할 수 없습니다.)
  • 프로젝트 스파르탄 - v 15.10130 (자리표시자 표시되는지를 선택할 수 있는 드롭다운이 아니다)
  • 업데이트 (10월 2015년 :*)

'스타일 = &quot 제거했을, 디스플레이: html5 의 속성 '숨겨진', '에서 none&quot 은혜를 디스크입니다. diskid 와이드 지원. 유사한 특징을 가지고 있다 '는' 숨겨진 요소 '디스플레이: 없음 '의 탐색기 (프로젝트 스파르탄 요구사항뿐 검사), 사파리, 빨리 Internet&amp 표시되어 있는 것은' 드롭다운이 '옵션을 선택할 수 없습니다.

  • 업데이트 (1월 2016년 :*)

'선택' 이 '때' 필수 '' CSS dtep 클래스 잘못된 요소가 있습니다 사용할 수 있는 스타일을 선택할 때 '요소' 의 &quot placeholder"; 상태. 여기서 '는' 빈 '옵션' 의 값 때문에 잘못된 자리표시자.

일단 값을 설정되었습니다 '이' 잘못된 dtep 클래스 적립율은 떨어트림. 또한 list. 강조표시할 경우 '' 유효함 수도 있습니다.

대부분의 브라우저에서 지원되는 이 dtep 클래스. 빨리 빨리 Explorer&amp internet&;;; 10 이상. 사용자 정의 스타일 '선택' 이 요소가 가장 효과적입니다. 경우에 따라 (즉, (Mac 에서 크롬 / 사파리), '선택' ll you& # 39 모양을 변경할 필요가 기본값입니다 시켜버리므로 디스플레이, 즉, '특정 색상' 기입란 도왔으매 배경색 '와'. 호환성에서는 emc. 대한 몇 가지 예를 들면 등을 찾을 수 있습니다. [developer.mozilla.org] [1].

Mac 의 기본 요소 모양을 크롬.

선택 기입란 넷윈을 Mac 에서 크롬!

Mac 에서 변경된 국경 요소를 사용하여 크롬.

변경된 선택하십시오를 기입란 Mac 에서 크롬!

[1]: 잘못된 https://developer.mozilla.org/en/docs/Web/CSS/

해설 (15)

최근의 브라우저에서 필드이므로 위한 필수 솔루션, css 순결케 있습니다.

<! - begin 스니핏: js 숨기십시오: &gt 거짓값 -;

select:required:invalid {
  color: gray;
}
option[value=""][disabled] {
  display: none;
}
option {
  color: black;
}

<select required>
  Select something...
  One
  Two
해설 (9)

이 같은 일이.

HTML:


<select id="choice">
    Choose...
    Something
    Something else
    Another choice
해설 (4)

그냥 '에서' 옵션을 추가한 숨겨짐 속성용 같은 같습니다. 정상적으로 작동하는 it for me.

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. &gt 거짓값 -;


<select>
  Sex
  Male
  Female
해설 (3)

또 이 솔루션은 작동됨 없이 아래에 Firefox 에서 JavaScript:

<! - begin 스니핏: js 숨기십시오: &gt 거짓값 -;

option[default] {
  display: none;
}

<select>
  Select Your Age
  1
  2
  3
  4
해설 (0)

전 그 동안 이 같은 문제가 검색: 왔는지 구현하므로 질문, 내가 찾은 후 좋은 솔루션이 it for me, I would like to share with you guys in case 1 정도의 효과를 누릴 수 있습니다.

이것은:

HTML:


<select class="place_holder dropdown">
    Sort by
    two
    something
    4
    5
해설 (3)

39, CSS, JavaScript 없이 있을 수 없는 경우 또는 isn& 불과 3 속성:


<select>
    Default Value
    Value 1
    Value 2
    Value 3
    Value 4
해설 (7)

나는 여기서 수정된 [David& # 39 의 오토메이티드] [1] (수락됨 답). 그는 '옵션을 선택한 videocopilot. net/tutorials. 오토메이티드 동일팔레트에 중지되 대한 속성 또한 볼 때 그런 것이 아니라,' 숨겨진 태그 태그 동일팔레트에 훨씬 낫다.

'태그' 옵션을 추가하여 숨겨짐 대한 속성 option&quot 선택, 이 &quot 못하게 됩니다. 이후 다시 선택 옵션이 못하도록 &quot Durr"; 옵션을 선택되었음.

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 거짓값 바벨. &gt 거짓값 -;


<select>
    Select your option
    Durr
해설 (1)

Here is mine:

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. &gt 거짓값 -;

select:focus option.holder {
  display: none;
}

<select>
    Please select
    Option #1
    Option #2
해설 (3)

사용자가 볼 안 자리표시자의 옵션을 선택합니다. 내가 제안하세요 자리표시자 옵션을 사용할 수 있는 '숨겨진', 't need 의 속성에 진실이며당신이 don& # 39 는 이를 위해 선택한' 속성을 디바이스입니다. 정보기술 (it) 을 첫 번째 동일팔레트에 됩니다.

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. &gt 거짓값 -;

select:not(:valid) {
  color: #999;
}

<select required>
    Select your option
    First option
    Second option
해설 (3)

내가 보고 정답을 조짐을 보이고 있지만, 이 모든 것을 가지고 이 약간만이라도 내 해결책:

<! - begin 스니핏: js 숨기십시오: &gt 거짓값 -;

select {
  color: grey;
}

option {
  color: black;
}

option[default] {
   display: none;
}

<select>
    Select your option
    Durr
해설 (1)

사용하는 경우 각 http://www. gnu. 다음과 같습니다.

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. &gt 거짓값 -;


<select>
    Select your option
    Durr
해설 (1)

'이' HTML CSS + 솔루션이므로 협력했습니다 가져다줄래요:

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. &gt 거짓값 -;

form select:invalid {
  color: gray;
}

form select option:first-child {
  color: gray;
}

form select:invalid option:not(:first-child) {
  color: black;
}


  <select required>
    Select Planet...
    Earth
    Pandora
해설 (0)

또다른 가능성을 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');
    }
});

[이스피들] [1]

해설 (0)

내가 나를 위해 일할 수 있기 때문에 현재 couldn& # 39, t get 이 모든 것이 필요 없고 (2) (1) default 로 반품하십시오 할 수 있는 옵션을 선택할 수 있습니다. 그래서 here& 사용하는 경우, 무거운 것 # 39 의 옵션을 포함한다.

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. &gt 거짓값 -;

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">
    Select Option
    Option 1
    Option 2
    Option 3
해설 (1)

이것은 CSS 솔루션을 사용할 수 있는 아름다운. 내용이 포함된 후 추가 (및 nnt 기준으로 포지셔닝됩니다 컨테이너입니다) 요소 ( 이후 통해 dtep 클래스 ).

It gets 에서 정의된 자리표시자 속성을 사용하여 해당 텍스트 내가 어디서 디렉티브을 ( 속성 (자리표시자) ). 또 다른 주요 요인은 포인터입니다 이벤트: 없음 - 클릭하는 자리표시자 텍스트 선택 (select 를 통과할 수 있습니다. 그렇지 않으면 드롭다운하십시오 won& # 39, t 누르면 텍스트를.

내가 내 스스로 선택할 수 있지만, 보통 나는 것을 알 수 있는 추가 .empty 클래스용 디렉티브을 각 자도으로 / 절감뿐만 .ng-empty 가져다줄래요 (I solaris. it& # 39 의 버전 1.2 m I& # 39, 각도 때문에 오는 내 코드 예제).

  • (샘플) 도 만들 수 있는 방법을 통해 랩 HTML 요소의 앙굴라이스 사용자 정의 투입물) *

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. &gt 거짓값 -;


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(' ') + '>
해설 (0)

입력입니다 자리표시자 선택을 위한 요소 '스타일' [유형 = &quot text";]

다음 솔루션이므로 시뮬레이션합니다 자리표시자 관련이 있기 때문에 '입력 [유형 = &quot text";]' 한 요소:

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. &gt 거짓값 -;

$('.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">
  Select Option
  Option 1
  Option 2
  Option 3
해설 (0)

39, m not 컨텐츠와 HTML / css 만 솔루션뀉뀉뀉뀉 도왔으매 i& i& # 39 을 javascript 를 사용하여 사용자 정의 ',' ve 만들기로 했다.

39 이 길이, ve 기록되었으므로 I& 과거 30 분, 따라서 한층 향상된 수 있습니다.

네가 해야 할 일은 거의 없이 단순한 데이터 속성뿐 목록을 만들 수 있습니다. 이 코드는 자동으로 돌리고 목록을 선택할 수 있는 드롭다운이. 또한 '숨겨진' 입력 값을 가질 수 있도록 자도으로 선택한 형태로 사용할 수 있도록.

입력:

<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>

39 의 돼 있는 항목의 텍스트를 that& 박스트롤의 자리표시자 회색으로 표시되어 있습니다. 이 경우, 그 결정은 그의 / 되돌려집니다 자리표시자 하는 사용자가 선택할 수 있다. 또한, CSS 를 사용하여 모든 방식의 단점 '선택' 극복할 수 있는 (예, 스타일을 옵션에 없음).

<! - begin 스니핏: js 숨기십시오: 진정한 콘솔: 진정한 바벨. &gt 거짓값 -;

// 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>

끝 - &lt 스니핏 >;!

&lt hr>;

  • 업데이트 *: # 39 이 향산된 i&, ve (up / down / enter 키를 사용하여 선택), 최고 출력 조금 정돈, 이 붙여넣습니다 객체에는 돌렸다. 현재 출력:
<div class="li-select-container">
    <input type="text" readonly="" placeholder="Role" title="Role">
    <span class="arrow">▼</span>
    <ul class="select">
        <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>

초기화하지:

new Liselect(document.getElementsByTagName("ul")[0]);

자세한 시험: [이스피들] [1], [&lt strike&gt /strike&gt GitHub<;;;] [2] (renamed).

&lt hr>;

  • Update:* 나는 다시 일어날 수 있다. 목록을 사용하는 대신 사용할 수 있고, 그냥 선택. # 39, ll 작동합니까 없어도 이렇게 it& JavaScript (# 39 의 경우 it& 비활성화됨).

입력:


<select name="role" data-placeholder="Role" required title="Role">
    Administrator
    Moderator
    User
해설 (1)

솔루션이므로 각 2

레이블에 만드시겠습니까 상단형 선택 "" class = &quot &lt, 라벨, hidden-label&quot. = &quot 대한 IsActive";

  • =, = undefined&quot 필테리사스티븐 나지프 &quot &gt 자리표시자 text&lt /label>;;; class = &quot 형식 컨트롤 form-control-sm&quot 선택 <;; type = &quot text"; name = &quot filterIsActive"; [(영모델)] = &quot filterIsActive"; id = &quot IsActive&quot >;; ,, /option&gt true&lt &gt true&quot 값 = &quot &lt 옵션이 있습니다. ,, /option&gt false&lt &gt false&quot 값 = &quot &lt 옵션이 있습니다. &lt /select>; "" css 를 적용하고 배치하여 상단형

"" .hidden-label { 위치: 절대. 여백 가기: .34rem. 왼쪽 여백에: .56rem. 글꼴 스타일. 기울임꼴의. 포인터입니다 이벤트: 없음; } "" "포인터입니다 이벤트: 없음 "으로 표시할 수 있습니다) 를 누르면 숨겨져 있는 레이블, 옵션을 선택하면.

[태그: 각] [태그 css] [html 태그:]

해설 (0)