autofill combobox基于另一个combobox选择

我基于auto.jsp中的第一个文本框自动填充第二个文本框,同样我想自动填充combobox,我该怎么办? 这是基于第一个combobox选择的自动填充第二个combobox。 —— auto.jsp ——-

 var xmlHttp var xmlHttp function showState(str){ if (typeof XMLHttpRequest != "undefined"){ xmlHttp= new XMLHttpRequest(); } else if (window.ActiveXObject){ xmlHttp= new ActiveXObject("Microsoft.XMLHTTP"); } if (xmlHttp==null){ alert ("Browser does not support XMLHTTP Request") return } var url="state.jsp"; url += "?count=" +document.getElementById("textbox1").value;//passing first textbox value and displaying in textbox2 ID xmlHttp.onreadystatechange = stateChange; xmlHttp.open("GET", url, true); xmlHttp.send(null); } function stateChange(){ if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){ document.getElementById("textbox2").value = xmlHttp.responseText; } }    // here i am displaying first textbox value  

——– state.jsp ———–

  

当我从第一个combobox中选择一个下拉列表时,我想做同样的事情,然后通过启用auto.jsp中的第二个combobox将事件触发到state.jsp,我该如何实现它?

谢谢

如果你使用jQuery,你可以大大简化你现有的代码 – 我假设你从标记你的问题的方式来做。 以下内容将替换您显示的所有代码,另外您不需要在html中使用内联onkeyup

 $(document).ready(function() { $("#textbox1").keyup(function() { $.get('state.jsp', {count : this.value}, function(responseData) { $("#textbox2").val(responseData); }); }); }); 

其中$.get()是jQuery的简单Ajax方法之一。 它将第二个参数中的数据传递给第一个参数中的url,当响应返回时,它调用第三个参数中的函数(这stateChange()你的stateChange()函数,除了jQuery为你测试状态和仅在准备好时调用该function)。

(顺便说一下,我不会在每个keyup上推荐一个新的Ajax请求。也许在模糊时执行它,或者至少使用超时机制来仅在用户停止输入时执行事件,比如400ms。)

当您说“基于第一个combobox选择自动填充第二个combobox”时,您是指根据第一个组合中选择的值设置可用选项列表吗? 假设你这样做,你可以使用类似于上面的技术:

 $("#combo1,#combo2,#combo3").change(function() { var associatedCombo = $(this).attr('data-associated'); requestData = {}; requestData[this.id] = $(this).val(); $.get('combo.jsp', requestData, function(responseData) { $("#" + associatedCombo).replaceWith(responseData); }); });  

'combo.jsp'将处理’combo1Val’请求参数并返回适当的数据。 如果你使用.replaceWith()方法,它需要返回填充组合的HTML,如下所示:

  

因为整个现有的组合将被替换为新组合。 当然还有很多其他方法,例如,仅返回选项,或返回JSON并使用它逐个创建选项。