我有一个数据库,我可以从中生成供用户选择的选项。根据此选择,我将这些值提交到同一页面并使用javascript进行选择。
在同一表格中,我有一个单选按钮和一个多选菜单。
html是这样生成的:
单选按钮和多个选项选择代码:
htmlstr+="<select multiple>";
for (i=0; i<g.length;i++) {
htmlstr+="<option name='ges[]' value='" + g[i] + "'>" + g[i] + "</option>";
}
htmlstr+="</select><br>";
for (i=0; i<st.length;i++) {
htmlstr+="<input type='radio' name='sts' value='" + st[i] + "'>" + st[i] + "<br>";
}
这些都放在一个表单中,然后有一个提交按钮。
单击提交按钮后,我想知道选择的值。我理解多个选择将是一个数组,但我如何获取值数组,我甚至无法获得所选单选按钮的值。我已经尝试使用附加到名称的.value
属性获取值,但这不起作用。
答案 0 :(得分:1)
没有一种真正简单的方法。您必须检查每个选项。
记录了一个HTMLSelectElement.selectedOptions接口。但它使用不多,我不确定浏览器的支持。此外,它仅适用于选择控件而不适用于无线电控件。您可以在此处查看:https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement
但是对于更可靠的方法,请尝试这个......
对于select控件,遍历selectControl.options数组,并检查每个项目是否为selected
属性。如果selected
属性为true,则将该值添加到您自己的数组中。
伪代码:
for (var i in select.options) {
if (select.options[i] && select.options[i].selected) {
selectedOptions.push(select.options[i].value);
}
}
对于单选按钮,遍历dom(getElementsByName)中的对象数组,并检查checked
属性。确实如此,将该值添加到您的数组中。
伪代码:
for (var i in radios) {
if (radios[i] && radios[i].checked) {
selectedOptions.push(radios[i].value);
}
}
以下是使用您的代码的完整工作示例: