在jquery中添加一个文本框onclick下拉值?

时间:2012-01-14 12:17:45

标签: php jquery

我遇到了jquery的问题。

我有一个带有4个下拉列表的div,我有一个“添加更多”按钮。

当我点击“添加更多”按钮时,在“添加更多”按钮上方创建了同一div的另一个实例。我是通过jQuery append()方法完成的,并且它成功运行,但我的问题是要求说当我从下拉列表中选择“其他”时,应该打开一个文本框,我将填写名称在列表中。

我可以这样做但是当我点击“添加更多”并创建另一个实例时,当我从动态创建的列表框中选择“其他”时,不会创建文本框,因为它们的ID变得相同而且我知道id可以不一样。

同样,其余的下拉发生了。如果我按类名执行,则一次创建所有文本框。我不想要这个。 我希望你理解我的问题。 请帮助我,并给我一个如何管理它的解决方案。

谢谢大家,感谢stackoverflow.com

更新

$(document).ready(function() { 
    alert('here'); 
    var content=$("#course").html(); 
    var content1=$("#emp").html(); 
    alert(content); 
    $("#add").click(function(){ 
        var n=$("#course .count").length; 
        if(n!=3){
            $("#course").append(content);
        }
        if(n==2){
            $("#add").hide();
        } 
    });
});

我的HTML就像

dropdown1 dropdown1 dropdown1 dropdown1

添加更多按钮

当我通过append()选择动态生成的下拉菜单时,“其他”的文本框不会出现意味着无法处理动态生成的div上的事件,谢谢

1 个答案:

答案 0 :(得分:1)

你或许想要这样的东西吗?

<html>
    <head>
    <title>Scripttest</title>
    <script type="text/javascript" src="js/jquery-1.7.1.min.js">
    </script>
    <script type="text/javascript">
        var current = 1;

        $(document).ready(function() {
            $("#addmore").bind('click', function() {
                $("#somediv").append(
                    $("<select/>").attr("id", current).attr("size", 1)
                        .append('<option value="someoption">Some Option</option>' +
                                '<option value="other">Other</option>')
                );
                $("<br/>").insertAfter($("#"+current));
                current++;
            });

            $("#somediv").delegate('select', 'change', function() {
                if($(this).val() == 'other') {
                    $("<textarea/>").attr("id", "tb_"+$(this).attr("id")).insertAfter($(this));
                }
                else {
                    $("#tb_" + $(this).attr("id")).remove();
                }
            });
        });
    </script>
    </head>
    <body>
    <button id="addmore">Add more</button>
    <div id="somediv">
    </div>
    </body>
</html>

如果选择“其他”选项,则允许您添加下拉列表并在其后面添加文本区域,如果取消选择,则删除它。