我有两个选择多个列表,我想获得正确列表的所有元素,无论它们是否被选中。
只是为了让您了解正在进行的操作,请访问jsFiddle
中的代码您将看到我只返回选中的数据,这些数据不适合我正在尝试做的事情,即提交包含正确选择列表的所有元素的表单。
注意: $('.submitForm').click(function (e))
必须保持不变。我可以创建一个新函数来执行该操作,然后调用$('.submitForm').click(function (e))
,但这将在此过程中创建一个额外的步骤。
所以我的问题是,如果我能以某种方式从正确的选择框中获取所有数据,而无需为此表单创建新函数。并且不改变由8种不同形式使用的$('.submitForm').click(function (e))
。
更新
再想一想,我不认为我可以从新功能中调用$('.submitForm').click(function (e))
,这样就会产生额外的问题
答案 0 :(得分:3)
在您的“保存”中添加onclick事件。按钮:
<button type="button" class="btn btn-success submitForm" onclick="listbox_selectall('d', true);">Save</button>
这将在你的jQuery事件监听器之前调用。
答案 1 :(得分:1)
只是评论:
您可以替换所有这些:
var increment = -1;
if (direction == 'up') increment = -1;
else increment = 1;
if ((selIndex + increment) < 0 || (selIndex + increment) > (listbox.options.length - 1)) {
return;
}
var selValue = listbox.options[selIndex].value;
var selText = listbox.options[selIndex].text;
listbox.options[selIndex].value = listbox.options[selIndex + increment].value
listbox.options[selIndex].text = listbox.options[selIndex + increment].text
listbox.options[selIndex + increment].value = selValue;
listbox.options[selIndex + increment].text = selText;
listbox.selectedIndex = selIndex + increment;
与
var newIndex = selIndex + (direction == 'up'? -1 : 2);
if (newIndex > -1 && newIndex < listbox.length + 1) {
listbox.insertBefore(listbox.options[selIndex], listbox.options[newIndex]);
}
以及所有这些:
var newOption = document.createElement("option");
newOption.value = option.value;
newOption.text = option.text;
newOption.selected = true;
try {
dest.add(newOption, null);
src.remove(count, null);
} catch (error) {
dest.add(newOption);
src.remove(count);
}
使用:
dest.appendChild(option);
option.selected = true;
此外,您不应在块内声明变量。 javascript中没有块作用域,因此最好在函数顶部声明变量(为语句声明的循环计数器除外)。