如何将选择选项显示为按钮?

时间:2018-10-08 17:58:25

标签: javascript css

我有一个带有选择的表格:

<select name="work_days" id="id_work_days" multiple="multiple">
  <option value="1">sun</option>
  <option value="2">mon</option>
  <option value="3">tue</option>
  <option value="4">wed</option>
  <option value="5">thu</option>
  <option value="6">fri</option>
  <option value="7">sat</option>
</select>

我想通过CSS和javascript将此表单字段呈现为一组按钮(请参见屏幕截图)

enter image description here

我试图将其显示为

<input type="button" name="work_days" value="sun">
<input type="button" name="work_days" value="mon">
<input type="button" name="work_days" value="tue">
<input type="button" name="work_days" value="wed">
...

但是我无法从后端的此表单获取并验证数据。选择小部件将是最好的选择,但是我不知道如何将其显示为按钮。

我很感谢一个想法或一个例子。

2 个答案:

答案 0 :(得分:1)

我建议在选择框上使用复选框,您将可以使用一些CSS技巧来完全设置按钮的样式。

#id_work_days input[type="checkbox"] {
  display: none;
}

#id_work_days span {
  display: inline-block;
  padding: 10px;
  text-transform: uppercase;
  border: 2px solid gold;
  border-radius: 3px;
  color: gold;
}

#id_work_days input[type="checkbox"]:checked + span {
  background-color: gold;
  color: black;
}
<p id="id_work_days">
  <label><input type="checkbox" name="work_days" value="1"><span>sun</span></label>
  <label><input type="checkbox" name="work_days" value="2"><span>mon</span></label>
  <label><input type="checkbox" name="work_days" value="3"><span>tue</span></label>
  <label><input type="checkbox" name="work_days" value="4"><span>wed</span></label>
  <label><input type="checkbox" name="work_days" value="5"><span>thu</span></label>
  <label><input type="checkbox" name="work_days" value="6"><span>fri</span></label>
  <label><input type="checkbox" name="work_days" value="7"><span>sat</span></label>
</p>

答案 1 :(得分:0)

您可以在选择元素中设置选项的样式

#id_work_days{
  height: 44px;
  border: none;
  overflow: hidden;
}
#id_work_days::-moz-focus-inner {
  border: 0;
}
#id_work_days:focus {
  outline: none;
}
#id_work_days option{
  width: 60px;
  font-size: 1.2em;
  padding: 10px 0;
  text-align: center;
  margin-right: 20px;
  display: inline-block;
  cursor: pointer;
  border:rgb(204, 204, 0) solid 1px;
  border-radius: 5px;
  color: rgb(204, 204, 0);
}
<select name="work_days" id="id_work_days" multiple>
  <option value="1">sun</option>
  <option value="2">mon</option>
  <option value="3">tue</option>
  <option value="4">wed</option>
  <option value="5">thu</option>
  <option value="6">fri</option>
  <option value="7">sat</option>
</select>