带有输入自定义值选项的 HTML 选择表单

新手上路,请多包涵

我想要一个输入字段,用户可以输入自定义文本值或从下拉列表中选择。常规 <select> 仅提供下拉选项。

如何制作 <select> 接受自定义值? 例如:福特?

 <select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>

原文由 Ib33X 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 412
2 个回答

HTML5 有一个内置的组合框。您创建一个文本 input 和一个 datalist 。 Then you add a list attribute to the input , with a value of the id of the datalist .

更新: 截至 2019 年 3 月,所有主要浏览器(现在包括 Safari 12.1 和 iOS Safari 12.3)都支持 datalist 达到此功能所需的级别。有关详细的浏览器支持,请参阅 caniuse

它看起来像这样:

 <input type="text" list="cars" />
<datalist id="cars">
  <option>Volvo</option>
  <option>Saab</option>
  <option>Mercedes</option>
  <option>Audi</option>
</datalist>

原文由 Dmitry 发布,翻译遵循 CC BY-SA 4.0 许可协议

Alen Saqe 的最新 JSFiddle 没有在 Firefox 上为我切换,所以我想我会提供一个简单的 html/javascript 解决方法,它将在表单(关于提交)中很好地运行,直到数据列表标签被所有浏览器/设备接受的那一天。有关更多详细信息并查看实际效果,请访问:http: //jsfiddle.net/6nq7w/4/ 注意:切换兄弟姐妹之间不允许有任何空格!

 <!DOCTYPE html>
<html>
<script>
function toggleField(hideObj,showObj){
  hideObj.disabled=true;
  hideObj.style.display='none';
  showObj.disabled=false;
  showObj.style.display='inline';
  showObj.focus();
}
</script>
<body>
<form name="BrowserSurvey" action="#">
Browser: <select name="browser"
          onchange="if(this.options[this.selectedIndex].value=='customOption'){
              toggleField(this,this.nextSibling);
              this.selectedIndex='0';
          }">
            <option></option>
            <option value="customOption">[type a custom value]</option>
            <option>Chrome</option>
            <option>Firefox</option>
            <option>Internet Explorer</option>
            <option>Opera</option>
            <option>Safari</option>
        </select><input name="browser" style="display:none;" disabled="disabled"
            onblur="if(this.value==''){toggleField(this,this.previousSibling);}">
<input type="submit" value="Submit">
</form>
</body>
</html>

原文由 mickmackusa 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题