根据复选框选择创建元素

时间:2013-09-11 14:43:20

标签: javascript jquery

我有这个HTML:

<fieldset style="" title="Variaciones" id="product-create-step-3" class="fstep">
    <legend>Variaciones</legend>
    <section id="choices">    
        <input type="checkbox" value="24" id="24" name="Size"> Size
        <input type="checkbox" value="25" id="25" name="Color"> Color

        <section style="display: none" class="options_holder"></section>
        <section style="display: none" class="variations_holder"></section></section>
</fieldset>

我需要根据标记的复选框/ es创建一些input。例如,如果我标记第一个&#39;尺寸&#39;我应该得到这个:

<section style="display: none" class="options_holder">
    <input name="size[24][]" value="" placeholder="Write your size" />
</section>    

如果我标记第二个&#39;颜色&#39;我应该得到这个:

<section style="display: none" class="options_holder">
    <input name="color[25][]" value="" placeholder="Write your color" />
</section>    

如果我同时标记&#39;尺寸&#39; &安培; &#39;色&#39;我应该得到这个:

<section style="display: none" class="options_holder">
    <input name="size[24][]" value="" placeholder="Write your size" />
    <input name="color[25][]" value="" placeholder="Write your color" />
</section>    

我该怎么做?

更新1

我试图通过这样做来检查哪个复选框:

$("#choices :checked").each(function() {
    console.log(this.id + "was checked");
});

但它不能正常工作

更新2

我意识到另一个问题,我如何检查复选框何时被检查,并在触发一些代码后不知道复选框的任何数据?我有一个代码可以动态生成复选框,因此我永远不会知道他们的姓名或身份或任何其他数据。我创建的模板如下所示:

<input type="checkbox" name="{{ entity.getLabel|lower }}" id="{{ entity.getLabel|lower ~ "_choice" }}" value="{{ entity.getId }}" /> {{ entity.getLabel }}

例如名称可以采取&#34;颜色&#34;在那种情况下,id将是&#34; color_choice&#34;或者名字可以采取&#34;尺寸&#34;在这种情况下,id将是&#34; size_choice&#34;,有时会创建一个时间。我需要知道的是,我不知道如何知道检查了哪个复选框以及何时触发某些事件,例如在运行中创建其他输入。我如何处理这部分呢?

2 个答案:

答案 0 :(得分:1)

因此,如果您更改选择器以包含使用伪选择器的元素,那么您的javascript应该可以工作:

$("#choices input:checked").each(function() {
    console.log(this.id + "was checked");
});

至于访问属性值,您可以使用您正在使用的本机javascript对象,即:

 console.log("value is " + this.value);

或者您可以使用jQuery的attr()

 console.log("name is " + $(this).attr('name'))

显示这两种情况的工作示例,以及将事件附加到输入项的任何点击都在这个jsfiddle:

http://jsfiddle.net/k3B73/

答案 1 :(得分:0)

<fieldset style="" title="Variaciones" id="product-create-step-3" class="fstep">
    <legend>Variaciones</legend>
    <section>    
        <input type="checkbox" value="24" id="24" name="Size" id='size_choice'> Size
        <input type="checkbox" value="25" id="25" name="Color" id='color_choice'> Color

        <section style="display: none" class="options_holder" id='options_holder'></section>   
        <section style="display: none" class="variations_holder"></section>
    </section>
</fieldset>

<script type="text/javascript">
    $(document).ready(function(){
        $('#size_choice').click(function(){
            if ($(this).is(':checked'))
                $("#options_holder").append('<input name="size[24][]" value="" placeholder="Write your size" id="size" />');
            else
                $("#size").destroy();
        });

        $('#color_choice').click(function(){
            if ($(this).is(':checked'))
                $("#options_holder").append('<input name="color[25][]" value="" placeholder="Write your color" id="choice" />');
            else
                $("#color").destroy();
        });
    })
</script>