1

我有一个复选框数组,我想将它用作一个数组,例如在一组选项中设置单个 iitems 并检索该组的值。对于单个复选框,我可以设置它并获取点击事件,作为一个数组我什么也得不到。

HTML 代码:

    <div class="k-group" id="chkbox-options">
    <label>
        Red
        <input type="checkbox" id="chk1" value="Red" data-bind="checked: colors" />
        Green
        <input type="checkbox" id="chk2" value="Green" data-bind="checked: colors" />
        Blue
        <input type="checkbox" id="chk3" value="Blue"  data-bind="checked: colors" />
    </label>
    </div> 

Javascript代码:

    <script  type="text/javascript">
        var colordata = null;
        $(document).ready(function () {
            colordata = kendo.observable({
                colors: ["Blue"]
            });
            kendo.bind($("chkbox-options"), colordata);
            $("#dump-values").click(function () {
                kendoConsole.log(colordata.colors.toString());
            });
            $("#chk1").click(function () {
                kendoConsole.log("click chk1");
                if (this.checked) {
                    kendoConsole.log("click chk1 true");
                }
            });
         });
    </script> 

我可以在单个复选框上获取单击事件,而我无法kendo.observable在字段 var colordata 中设置复选框的值。

我在剑道文档中看到了一个类似的例子,但我无法让它工作。

谢谢你的帮助

马可

4

1 回答 1

1

几点: 1. 在 kendo.bind 中缺少 div id chkbox-options 2. 您需要在可观察对象的更改事件中读取更改的颜色。更改发生在单击事件之后,因此在单击事件中您总是会看到旧数据。

我已经纠正了你的 jsFiddle:http: //jsfiddle.net/whizkid747/rPjjJ/4/

var colordata = null;
        $(document).ready(function () {
            colordata = kendo.observable({
                colors: ["Blue"]
            });
            kendo.bind($("#chkbox-options"), colordata);

            colordata.bind("change", function(e) {
                var selectedColors = '';

                $.each(colordata.colors, function(key, value){
                    selectedColors = selectedColors + " " + value;
                });
                if(colordata.colors.length == 0){
                    console.log('no colors selected');
                }else{
                console.log('selected colors:' + selectedColors);  
                }
            });            
         });
于 2013-04-23T15:26:09.397 回答