javascript - 选择列表不保留所选值

标签 javascript jquery html css

我创建了自定义<select>使用 jQuery 为表单中的多个选择框设置样式。但是<select>框不会显示是否预先选择了任何值,但始终显示“请选择”。

  $('.custom_select').each(function() {
    var list = $(this).children('ul'),
      select = $(this).find('select'),
      title = $(this).find('.select_title');
    title.css('min-width', title.outerWidth());

    // select items to list items
    if ($(this).find('[data-filter]').length) {
      for (var i = 0, len = select.children('option').length; i < len; i++) {
        list.append('<li data-filter="' + select.children('option').eq(i).data('filter') + '" class="tr_delay_hover">' + select.children('option').eq(i).text() + '</li>')
      }
    } else {
      for (var i = 0, len = select.children('option').length; i < len; i++) {
        list.append('<li class="tr_delay_hover">' + select.children('option').eq(i).text() + '</li>')
      }
    }
    select.hide();

    // open list			
    title.on('click', function() {
      list.slideToggle(400);
      $(this).toggleClass('active');
    });

    // selected option
    list.on('click', 'li', function() {
      var val = $(this).text();
      title.text(val);
      list.slideUp(400);
      select.val(val);
      title.toggleClass('active');
    });
  });
.select_title {
  cursor: pointer;
  padding: 2px 39px 3px 9px;
  border: 2px solid #e4e4e2;
  background: #f5f7f8;
  z-index: 1;
  min-width: 75px;
  -webkit-transition: border-color .4s ease;
  -moz-transition: border-color .4s ease;
  -o-transition: border-color .4s ease;
  transition: border-color .4s ease;
}
.select_list {
  cursor: pointer;
  width: 100%;
  border-left: 2px solid #e4e4e2;
  border-right: 2px solid #e4e4e2;
  border-bottom: 2px solid #e4e4e2;
  -webkit-border-bottom-left-radius: 4px;
  -moz-border-bottom-left-radius: 4px;
  border-bottom-left-radius: 4px;
  -webkit-border-bottom-right-radius: 4px;
  -moz-border-bottom-right-radius: 4px;
  border-bottom-right-radius: 4px;
}
ul {
  list-style: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="custom_select relative">
  <div class="select_title">Please Select</div>
  <ul class="select_list d_none" style="display:none;"></ul>
  <select name="title" id="title" required style="display:none;">
    <option value=""></option>
    <option value="Mr." selected="selected">Mr.</option>
    <option value="Mrs.">Mrs.</option>
    <option value="Miss.">Miss</option>
  </select>
</div>

如何显示是否选择了值?

最佳答案

我只需获取初始选择值 val() 并将其作为文本分配给 title 容器:

title.text(select.val() || 'Please Select');

如果所选的为空(或者初始未选择任何选项),它将使用标准的“请选择”更新标题文本。

JSFiddle

如果你想对代码有更多的控制权,你可以广泛地编写上面的代码:

if(select.val()){
    title.text(select.val());
    // anything else ...
}else{
    title.text('Please Select');
    // anything else ...
}

关于javascript - 选择列表不保留所选值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31891319/

相关文章:

javascript - 添加 javascript 后标题元素不会显示,但删除它后会显示

jquery - Bootstrap Modal 未关闭数据关闭 (Rails)

javascript - java中将记录上传到数据库时的Jquery进度条

html - 如何让网页记住上次打开的文件目录?

javascript - 简单的幻灯片无法正常工作

javascript - 使用 javascript 在类的基础上重新排列表格行

javascript - 为什么此表单验证空输入值失败?

php - JavaScript 中的输入元素

jquery - 有没有办法相对于鼠标光标定位 md-tooltip?

javascript - 在循环 Javascript 中更改悬停样式