繁体   English   中英

基于首次下拉选择值的多下拉菜单

[英]Multiple Drop-Down Menus Based on Selected Value of First Drop-Down

我一直在寻找类似的问题,但它们与我正在寻找的有点不同。

基本上,这是我的目标:

有一个填充值的第一个下拉列表,例如:

<form>
<select id="tags" name="tags">
<option value="agent" selected="selected">agent</option>
<option value="extension">extension</option>
<option value="fileversion" >fileversion</option>
<option value="pages">pages</option>
</select>

然后,在第二个下拉列表中,显示取决于所选内容的选项,例如,如果选择了代理,则运算符将为=!=因为它是文本。 对于fileversion,将有4个操作数, =!=><

最后,还会有第三个下拉值,其值也取决于最初选择的选项。

例如,当选择代理时,选项将是pdfwordexcelppt等,而其他选项只是一个text box可以键入而不是耗尽所有可能的值。

最后这将用于搜索数据库,但它是一个大数据库,搜索太慢,所以我认为选项的值将存储在一个数组而不是直接拉。

正如你所看到的,它是相当棘手的:/任何帮助都非常感激。

谢谢,马丁

编辑:

找到那些正在寻找相同答案的人的答案:

<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
<script type="text/javascript" src="js/jquery-1.4.2.js"></script>
<script type="text/javascript" src="js/dropdown.js"></script>
</head>
<body>
<form>
<select id="tags" name="tags">
<option value="tags" selected="selected">tags</option>
<option value="agent">agent</option>
<option value="extension">extension</option>
</select>

<select name="operands">
<option>operands</option>
</select>
</form>
</body> 
</html>

dropdown.js:

$(document).ready(function() {
$tags = $("select[name='tags']");
$operands = $("select[name='operands']");

$tags.change(function() {

if ($(this).val() == "agent") {
$("select[name='operands'] option").remove();
$("<option>=</option>").appendTo($operands);
$("<option>!=</option>").appendTo($operands);
}

if ($(this).val() == "extension") 
{
$("select[name='operands'] option").remove();
$("<option>.pdf</option>").appendTo($operands);
$("<option>.doc</option>").appendTo($operands);
}

if ($(this).val() == "tags") 
{
$("select[name='operands'] option").remove();
$("<option>operands</option>").appendTo($operands);
}

});
});
var selectionObject = {
agent = ["=","!="],
fileversion = ["=","!=",">","<"],
...
}

$('form select#tags').click(function(){
comboBoxSelection = $(this).val();
secondDropDownvalues = selectionObject[comboBoxSelection];
....
});

伪代码应该是这样的

尝试这样的东西,一个数据对象填充相应的数据..

var data = {
  agent: [
    ["=", "!="], //values that are shown in 1st dropdown when agent is selected
    ["a", "b"] //values that are shown in 2nd dropdown when agent is selected
  ]
  extension: [
    ["pdf", "doc"], //values that are shown in 1st dropdown when extension is selected
    ["c", "d"] //values that are shown in 2nd dropdown when extension is selected
  ]
}

并为HTML

<select id="tags" name="tags">
  <option value="agent" selected="selected">agent</option>
  <option value="extension">extension</option>
  <option value="fileversion" >fileversion</option>
  <option value="pages">pages</option>
</select>

<select id="dropdown2" name="dropdown2">
</select>

<select id="dropdown3" name="dropdown3">
</select>

现在侦听标签下拉列表中的更改并从数据对象中获取选项(使用jquery的示例)

$("#tags").change(function() {
  setDropDown1(data[$(this).val()][0]);
  setDropDown2(data[$(this).val()][1]);
});

将数据传递给这样的函数以创建下拉选项

function setDropDown1(data) {
  $("#dropdown1").html(""); //clear options
  for (var i = 0; i < data.length; i++) {
    $("#dropdown1").append("<option value='" + data[i] + "'>" + data[i] + "</option>");
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM