我有一个包含多个下拉选择框的多页表单。大多数这些盒子需要有一个“其他”字段,然后输入一个不是选择值之一的内容。提交表单后,如果选择“其他”,则应将“其他”内容保存到数据库中以代替下拉菜单。
是否有一个已经编写的插件或脚本可以轻松地为我执行此操作?我的很多字段都是动态创建的,必须稍后编辑(使用嵌套的表单jquery插件),因此编写适用于所有字段的代码(不为每个字段编写特定的函数)对我来说很难。
如果我找不到合适的插件,我可能会使用Dojo dijit Combobox,虽然这完全符合我的要求,但我的用户的理想选择是一个选择框插件,其中包含“其他” “下拉列表中的选项,当选择”其他“时,会出现一个文本框供用户填写。在编辑字段时,还需要根据存储在数据库中的值适当地填充下拉列表或文本框。这样的事情是存在于javascript / jquery / prototype / other,还是rails 3插件或gem?非常感谢!
编辑:如果我找不到具有单独文本区域的内容,我很可能会使用FlexBox - 但我仍然在寻找单独的文本区域解决方案!
答案 0 :(得分:0)
我把一个可能做你想做的小脚本放在一起:http://jsfiddle.net/nHh3C/ 绝对可以改进,但我想你明白了。可能实际上自己使用它:D
这是JS:
$('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
选择器更改为您需要的选项即可。也不难将其包装在插件中。
编辑2 使用rails你应该可以做这样的事情(可能在助手中更好)来生成选择:
select("post", "person_id", Person.all.collect {|p| [ p.name, p.id ] } << ['Other', 'other'])
对于编辑视图,您只需检查该值是否包含在选择值中,如果不包含,则打印其他输入字段并将选择设置为预先选择“其他”选项。你应该处理JS来匹配这种情况。