【发布时间】:2012-02-19 18:19:07
【问题描述】:
有没有一种方法可以模仿 C 输入/选择框,在该框的顶部有一个空白文本条目的下拉菜单?用户可以键入新值或从列表中选择。有没有人想办法用 PHP/Javascript 做到这一点? AJAX 类型的解决方案甚至会更好。
我不知道如何称呼这种类型的盒子,我认为它不像大多数人想象的那样是一个“组合框”。
【问题讨论】:
有没有一种方法可以模仿 C 输入/选择框,在该框的顶部有一个空白文本条目的下拉菜单?用户可以键入新值或从列表中选择。有没有人想办法用 PHP/Javascript 做到这一点? AJAX 类型的解决方案甚至会更好。
我不知道如何称呼这种类型的盒子,我认为它不像大多数人想象的那样是一个“组合框”。
【问题讨论】:
你有几个选择。
这是我在 jQuery 中整合的一个快速函数,可以满足您的需求。此选项需要客户端启用 JavaScript 才能工作。
如果您不想让 JavaScript 成为必需项
如果您想要一个没有 JavaScript(客户端代码)的解决方案。您必须在其旁边或之后放置一个与您的选择框具有相同“名称”的输入框,并向您的选择框添加一个“其他”选项。
<select name="selAnimals" id="selAnimals">
<option value="dog">Dog</option>
<option value="cat">Cat</option>
<option value="bird">Bird</option>
<option value="guineapig">Guinea Pig</option>
<option value="">Other</option>
</select>
<input type="text" name="selAnimals_Other" id="selAnimals_Other" />
现在您的 PHP 必须同时检查 $_POST["selAnimals"] 和 $_POST["selAnimals_Other"] 以得出正确的值。
最好的选择是将上面的 HTML 和上面的 JavaScript 结合起来,为启用或禁用 JavaScript 的用户创建一个优雅的降级解决方案。
我从答案顶部向 jsfiddle 添加了额外的 HTML INPUT 标签,并且只更改了 jQuery 函数 (makeInputSelect) 的 1 行。
var $inp = $("#" + id + "_Other");
【讨论】:
您可以为此使用著名的Chosen 库:)
顺便说一句,见第二个国家的例子。
【讨论】: