2014-04-25 6 views
1

У меня есть два списка с несколькими списками, и я хочу получить все элементы списка справа, если они выбраны или нет.Получить все элементы тега select

Просто чтобы дать вам представление о том, что происходит посетить мой код в jsFiddle

Вы увидите, что я получаю обратно только данные, которые выбраны, не является идеальным для того, что я пытаюсь сделать что представить форма со всеми элементами правого списка выбора.

Примечание:$('.submitForm').click(function (e))ДОЛЖНА остаются теми же. Я мог бы создать новую функцию для этого, а затем вызвать $('.submitForm').click(function (e)), но это создаст дополнительный шаг в этом процессе.

Так что мой вопрос в том, может ли я как-то получить все данные из нужного прямоугольника, не создавая новую функцию только для этой формы. и без изменения $('.submitForm').click(function (e)), который используется 8 различными формами.

Update На второй мысли, я не думаю, что я могу назвать $('.submitForm').click(function (e)) из новой функции так, что создаст дополнительный выпуск

+1

Пожалуйста, разместите соответствующий код здесь не только на скрипке. Когда вы сериализуете форму, вы получаете данные, которые будут отправлены, это нормальная подача. Таким образом, включены только выбранные флажки/радио/кнопки и т. Д. Почему вы хотите их всех - вы не знаете, какие из них выбраны? Так в чем смысл? Или вы хотите, чтобы каждый из них имел логическое значение? или что? – Adam

+0

Возможно, потому, что это поле выбора, которое позволяет выбрать несколько значений. – Mastrianni

+0

@Adam Ну, когда вы открываете модальный, вы можете правильно перенести значения в каждый список? Когда вы это делаете, у вас есть только один выбранный элемент (элемент, который вы переместили), поэтому, когда вы нажимаете кнопку отправки, у вас нет всех элементов выбранного списка, поэтому только тот, который отправляется конкретному элементу. Если вы будете использовать код в jsFiddle, вы сможете увидеть результат и то, что я говорю о – Geo

ответ

3

Добавить OnClick событие в кнопку «Сохранить»:

<button type="button" class="btn btn-success submitForm" onclick="listbox_selectall('d', true);">Save</button> 

Это будет вызываться перед слушателем событий jQuery.

+0

Вот что я говорю! :) Благодаря! – Geo

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 нет области блока, поэтому лучше объявлять переменные в верхней части функции (за исключением счетчиков циклов, объявленных в для операторов).

Смежные вопросы