根据复选框而不是选择来调用函数

时间:2016-05-23 10:34:03

标签: javascript jquery

我是JS / JQuery的新手,我正在尝试用新的代码替换旧代码。

我有一个包含很多项目的选择列表。此列表允许将所选项目添加到隐藏输入。

这是该功能的原型:

<select id="selectAptitudes" onchange="$('aptitudes_id').value=this.value; addAptitudeField(this,'aptitudes');">

这是隐藏的输入:

<input name="aptitudes_id" id="aptitudes_id" type="hidden" value="">

这是破坏我生命的特殊功能:

addAptitudeField : function(currentAutocompleteField, idChamp) {
    // Allows to send param to setTimeout
    var currentAutocompleteFieldBind = currentAutocompleteField;
    var idChampBind = idChamp;
    // setTimeOut allows to execute the function
    window.setTimeout(function() {
        var idChamp = idChampBind;
        var currentAutocompleteField = $(currentAutocompleteFieldBind);
            var currentValue = currentAutocompleteField.options[currentAutocompleteField.selectedIndex].title;
            var currentCategorie = currentAutocompleteField.options[currentAutocompleteField.selectedIndex].parentNode.label;
            var currentParent = currentAutocompleteField.parentNode;
            var allInputs = currentParent.getElementsByTagName("input");
            var countAllInputs = allInputs.length;
            var lastAutocompleteFieldId = allInputs[countAllInputs - 1];
            var lastValueId = "";
            if (lastAutocompleteFieldId != null) {
                lastValueId = lastAutocompleteFieldId.value;
            }

            /* A lot of instructions to add elements to database using Ajax
            * and to write added elements in the end of the page
            */

            if ( $('selectAptitudes')){
                $('selectAptitudes').options[0].selected = true;
            }

            $(idChamp + "_id").value = "";
            }
        }, 400);
    },

嗯,我想要解决的问题是,这种方式允许我们按时间选择一个项目,这就是为什么我用复选框替换了选项(易于检查/取消选中),并添加了一个按钮。

我正在寻找的是有一次我点击按钮,我可以为每个选中的元素执行相同的指令:"$('aptitudes_id').value=this.value; addAptitudeField(this,'aptitudes');

我的想法是调用一个创建复选框列表的函数,并且此liste的每个项都调用第一个函数。我尝试使用这个小代码,但它不起作用。

这是我的功能:

ajouterApt = function(){
    var listApt = [];
    $('.Aptitudes input:checked').each(function() {
        listApt.push(this.name);
    });
    nbrItem = listApt.length;
    for(var i=0; i<nbrItem; i++){
        $('aptitudes_id').value=listApt[i].value; 
        addAptitudeField(listApt[i],'aptitudes');
    }
};

我认为我的函数需要正确调用函数“addAptitudeField()”。

感谢您的出色时间和帮助

0 个答案:

没有答案