首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一个插件可以在下拉菜单中创建一个" Other“选项,并在选择Other时创建一个用于替代输入的文本框?

问有没有一个插件可以在下拉菜单中创建一个" Other“选项,并在选择Other时创建一个用于替代输入的文本框?
EN

Stack Overflow用户
提问于 2011-01-21 23:44:39
回答 1查看 467关注 0票数 1

我有一个带有许多下拉选择框的多页表单。这些框中的大多数需要有一个"Other“字段,然后有一种输入内容的方法,而不是选择值之一。提交表单时,如果选择了"Other“,则应将"other”内容保存到数据库中,而不是下拉菜单。

有没有已经写好的插件或者脚本可以很容易的帮我做到这一点?我的许多字段都是动态创建的,必须在以后进行编辑(使用嵌套形式的jquery插件),所以编写适用于所有字段的代码(而不是为每个字段编写特定的函数)对我来说很困难。

如果我找不到合适的插件,我可能会使用Dojo dijit Combobox,而这正是我正在寻找的,对于我的用户来说,理想的选择框插件应该是一个在下拉列表中有"Other“选项的选择框插件,当"Other”被选中时,会出现一个文本框供用户填写。编辑字段时,还需要根据存储在数据库中的值相应地填充下拉框或文本框。在javascript/jquery/prototype/other、Rails3插件或gem中是否存在这样的东西?非常感谢!

编辑:如果我找不到有单独文本区域的东西,我很可能会使用FlexBox --但我仍然在寻找一个单独文本区域的解决方案!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-22 01:02:33

我拼凑了一个小脚本,它可能会做你想要的:http://jsfiddle.net/nHh3C/肯定仍然可以改进,但我猜你已经明白了。我自己可能会用到这个:D

下面是JS:

代码语言:javascript
复制
$('select').each(function(i, select){
    if (!$(select).data('name')) {
        $(select).data('name', $(select).attr('name'));
    } 
    $(select).change(function(){
        if ($(this).val() == 'other') {
            $('<input/>', {
                'name' : $(this).attr('name')
            }).insertAfter($(this)); 
            $(this).attr('name', '');
        } else {
            $('input[name='+$(this).data('name')+']').remove();
            $(this).attr('name', $(this).data('name'));
        }
    });
});

编辑啊,以防这一点不清楚-它使用jQuery。只需将select选择器更改为您需要的内容,您就应该设置好了。将其封装在一个插件中也不难。

使用rails编辑2你应该能够像这样做(在帮助器中可能更好)来生成select:

代码语言:javascript
复制
select("post", "person_id", Person.all.collect {|p| [ p.name, p.id ] } << ['Other', 'other'])

对于编辑视图,您只需检查该值是否包含在选择值中,如果不包含,则打印一个额外的输入字段,并将选择设置为预先选择“其他”选项。并且您应该处理JS以匹配这种情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4760704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档