JavaScript函数仅在被告知预先选择更多时才选择第一个复选框

时间:2011-04-09 11:52:51

标签: php javascript jquery

我有一个JavaScript函数,当选择了某个选择框的值时,它会动态创建复选框元素。要验证是否选中了复选框,请从PHP发送变量。

例如:var_id=1,2,3,5。我使用jQuery.inArray,但我只检查了从五个列表中选中的第一个复选框。

这是创建复选框lis的函数:

function outcheckboxes(_id, _text, var_id) {
  (function($){
    var topicContainer = jQuery('#classificationss_id');

    topicContainer.append(
        $('<li />')
        .addClass('checkboxclassid')
        .append(
            $('<input />', {
            id:      'classid' + _id,
            name:    'classid[]',
            value:   _id,
            type:    'checkbox',
            checked: !$.inArray(_id, var_id)
            })                                      
        )
        .append(
            $('<label />', {
            'for':  'classid' + _id
            }).text( _text)
            )
        )
    })(jQuery)
}

我从另一个函数调用函数outcheckboxes

function Classifications(obj_parent, obj_this, obj_child, var_id) {

        var catalog_id = jQuery("#"+obj_parent).selectedValues()[0];
        jQuery("#classificationss_id").children().remove();
        jQuery("#"+obj_this).children().remove();
        jQuery("#"+obj_child).children().remove();


        if(catalog_id>0){
            jQuery.ajax({
                type : "GET",
                url : "../index.php",
                data : "option=com_namecat&view=lists&format=raw&list=classifications&id=" + catalog_id,
                dataType : "xml",
                success : function(xml) {
                    var _id = "";
                    var _text = "";

                    jQuery(xml).find("row").each( function() {
                        _id = jQuery(this).find("id").text();
                        _text = jQuery(this).find("text").text();
                        jQuery("#"+obj_this).addOption(_id, _text );

                        outcheckboxes(_id,_text,var_id);

                    });
                }
            });
        }
}

我哪里错了?

1 个答案:

答案 0 :(得分:2)

对于一个人来说,你应该像这样编写你的代码:

编辑:

添加了简写

(function($) {
    $('<li />')
        .addClass('checkboxclassid')
        .append(
            $('<input />', {
                id:      'classid' + _id,
                name:    'classtype[]',
                value:   _id,
                type:    'checkbox',
                checked: !$.inArray(_id, var_id) 
            })                                      
        )
        .append(
            $('<label />', {
                'for':  'classid' + _id
            }).text( _text)
        )
})(jQuery)