我是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()”。
感谢您的出色时间和帮助