#javascript #jquery
#javascript #jquery
Вопрос:
Я пытаюсь создать флажок множественного выбора из выпадающего списка и получить выбранные результаты, объединенные с помощью ;
.
мой код выглядит следующим образом:
var myobject = {
ValueA : 'Text A',
ValueB : 'Text B',
ValueC : 'Text C',
ValueD : 'Text D',
ValueE : 'Text E',
ValueF : 'Text F'
};
var select = document.getElementById("rec_mode");
for(index in myobject) {
select.options[select.options.length] = new Option(myobject[index], index);
}
<select id="rec_mode">
</select>
Ответ №1:
Просмотрите функцию selectedValue()
, которая запускается, когда select изменяет свое значение. Кроме того, для нескольких значений вы должны добавить multiple
атрибут к тегу select.
var myobject = {
ValueA : 'Text A',
ValueB : 'Text B',
ValueC : 'Text C',
ValueD : 'Text D',
ValueE : 'Text E',
ValueF : 'Text F'
};
var select = document.getElementById("rec_mode");
for(index in myobject) {
select.options[select.options.length] = new Option(myobject[index], index);
}
function selectedValue() {
var selectChilds = document.getElementById("rec_mode").childNodes;
var selectedValues = "";
for(var i = 0; i < selectChilds.length; i ){
if(selectChilds[i].selected){
selectedValues = selectChilds[i].value ";";
}
}
alert(selectedValues.substring(0, selectedValues.length -1));
}
<select id="rec_mode" multiple onchange="selectedValue()">
</select>
Редактировать
Если вы хотите написать код с checkbox
тегами, следуйте этому фрагменту.
var myobject = {
ValueA : 'Text A',
ValueB : 'Text B',
ValueC : 'Text C',
ValueD : 'Text D',
ValueE : 'Text E',
ValueF : 'Text F'
};
var chbxs = document.getElementById("rec_mode");
for(index in myobject) {
chbxs.innerHTML = '<input type="checkbox" value="' index '" /> ' myobject[index] '<br />'
}
function selectedValue() {
var selectChilds = document.getElementById("rec_mode").childNodes;
var selectedValues = "";
for(var i = 0; i < selectChilds.length; i ){
if(selectChilds[i].checked){
selectedValues = selectChilds[i].value ";";
}
}
document.getElementById("result").textContent = selectedValues.substring(0, selectedValues.length -1);
}
<div id="rec_mode" onchange="selectedValue()">
</div>
<p id="result"></p>
Комментарии:
1. спасибо за ответ! не могли бы вы помочь с тем, как добавить флажок в сторону от опций?
2. Добро пожаловать. Добавление флажка в сторону тегов опций изменит структуру HTML, потому что вам придется удалить
select / option
тег и использоватьcheckbox
теги. Используя только HTML, вы не можете добавитьcheckbox
в сторонуoption
внутриselect
. Итак, если вы хотите новое решение с этими неудобствами, я помогу вам на этом пути.3. Привет, Юлио, я был бы признателен, если бы ты мог помочь таким образом
4. Привет @johnbrandes, просмотрите новый раздел ответа, я надеюсь, это поможет вам.
Ответ №2:
Возможно, это наполовину ответ, но он может вам помочь 🙂
var myobject = {
ValueA : 'Text A',
ValueB : 'Text B',
ValueC : 'Text C',
ValueD : 'Text D',
ValueE : 'Text E',
ValueF : 'Text F'
};
$(document).ready(function() {
for(index in myobject) {
var temp ="<li><input type='checkbox' value='" index "' />" index "</li>"
document.getElementById("listOfCheckbox").innerHTML =temp;
}
});
<div class="mutliSelect">
<ul id="listOfCheckbox"></ul>
</div>