2010-09-27 41 views
1

我正在寻找一种方法将自定义选项添加到下拉选择列表与Jquery。因此,用户可以点击下拉菜单,并看到一个选项列表,最后一个点击“添加其他...”,然后他们可以输入自己的选项(直接通过弹出窗口,弹出窗口)内联或然而)。在代码点火器中使用jQuery将选项添加到DropDownList

有下面的帖子解释它,但是,我使用的配置选项作为一个数组等。我如何可以应用此代码点火器?

How do I add options to a DropDownList using jQuery?

谢谢!

p.s.我的知识不是很好。

回答

1

试试这个关于大小:

http://jsfiddle.net/Fh5Bz/1/

HTML

<select id="myselect"> 
    <option>hello</option> 
    <option>world</option> 
    <option>Add other...</option> 
</select> 

<div id="addother"> 
    <input type="text" id="addother_input" /> 
</div>​ 

CSS

#addother { 
    display:none; 
}​ 

JS

$(document).ready(function() { 
    $('#myselect').change(function(e) { 
     if ($(this).val() == "Add other...") { 
      $('#addother').show(); 

      //set the input back to an empty string 
      $('#addother_input').val(''); 
     } else { 
      $('#addother').hide(); 
     } 
    }); 
});​ 

编辑:对不起,错过了它是一个CI生成的选择元素的线。在CI,创建这样一个选择的元素:

$options = array(
        'small' => 'Small Shirt', 
        'med' => 'Medium Shirt', 
        'large' => 'Large Shirt', 
        'xlarge' => 'Extra Large Shirt', 
       ); 

echo form_dropdown('shirts', $options); 

如果你想创建一个额外的选项,只需把它钉住到年底,像这样:

$options = array(
        'small' => 'Small Shirt', 
        'med' => 'Medium Shirt', 
        'large' => 'Large Shirt', 
        'xlarge' => 'Extra Large Shirt', 
        'addother' => "Add other..." 
       ); 

echo form_dropdown('shirts', $options, null, 'id="myselect"'); 

然后,在你jQuery,测试$(this).val()==“addother”而不是“Add other ...”。

+0

感谢treeface!我会试试看,还有一个很好的指向jsFiddle的指针,我以前从未见过 - 非常可爱。 – Robimp 2010-09-27 17:08:35

+0

的确,不客气,@Robimp。我从来没有使用CI的表单助手,所以我不能完全说出所有的细节(例如,你可能甚至不需要关联选项数组的关联数组,因此可以检查“添加其他...”或者你可以简单地使该数组键为“添加其他...”或“-1”或其他)。也不完全确定form_dropdown()函数中的第三个参数。如果你不想明确选择任何选项,我相信他们允许你在那里放置null。 – treeface 2010-09-27 17:16:19

+0

是的,我有一点麻烦让它工作,不知道我做错了什么,浏览器似乎是删除我认为的JS。我将它直接放入文档(视图)中,因为它通过ajax被拉入。实际上,输入那个,我刚刚意识到你不能通过ajax提取脚本。该死的。第三个参数用于'set_value('input_name')',然后返回在控制器进行验证,然后到数据库的数据库 - 我想。我通常将它用于我的CI表单,该表单处理所有内容:http://formigniter.org/。 – Robimp 2010-09-27 17:23:50