获取选择标记的所有元素

时间:2014-04-25 21:43:36

标签: javascript jquery html

我有两个选择多个列表,我想获得正确列表的所有元素,无论它们是否被选中。

只是为了让您了解正在进行的操作,请访问jsFiddle

中的代码

您将看到我只返回选中的数据,这些数据不适合我正在尝试做的事情,即提交包含正确选择列表的所有元素的表单。

注意: $('.submitForm').click(function (e)) 必须保持不变。我可以创建一个新函数来执行该操作,然后调用$('.submitForm').click(function (e)),但这将在此过程中创建一个额外的步骤。

所以我的问题是,如果我能以某种方式从正确的选择框中获取所有数据,而无需为此表单创建新函数。并且不改变由8种不同形式使用的$('.submitForm').click(function (e))

更新 再想一想,我不认为我可以从新功能中调用$('.submitForm').click(function (e)),这样就会产生额外的问题

2 个答案:

答案 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中没有块作用域,因此最好在函数顶部声明变量(语句声明的循环计数器除外)。