当前位置: 首页 > 面试题库 >

根据另一个组合框选择自动填充组合框

娄振
2023-03-14
问题内容

我正在基于auto.jsp中的第一个文本框自动填充第二个文本框,类似地,我想自动填充组合框,我该怎么办?即根据第一个组合框选择自动填充第二个组合框。------
auto.jsp -------

<script language="javascript" type="text/javascript">  
    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;    
        }   
    }   
</script>  
 <body>  
 <input id="textbox1" type="text" name="name" onkeyup="showState(this.value)"/> 
<input id="textbox2" type="text" name="secondVal" />// here i am displaying first textbox value
</body>

-------- state.jsp -----------

<%
String firsttextbox=request.getParameter("count");//Got first textbox value
out.println(firsttextbox);// setting it in second text box value by document.getElementById("textbox2").value = xmlHttp.responseText; 
%>

当从第一个组合框中选择下拉菜单时,我也想做同样的事情,然后通过在auto.jsp中启用第二个组合框将事件触发到state.jsp,我该如何实现呢?

谢谢


问题答案:

您可以简化现有的代码 很多 ,我认为你从你标记你的问题的方式去做-
如果你使用jQuery。以下代码将替换您显示的所有代码,并且您将不需要onkeyuphtml中的内联代码:

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

$.get()jQuery的简单Ajax方法之一在哪里。它将数据从第二个参数传递到第一个参数中的url,然后返回响应时,它将在第三个参数中调用该函数(这等效于您的stateChange()函数,但jQuery为您测试状态并且仅调用准备就绪时起作用)。

(顺便说一句,我不建议在每次键入键时都提出一个新的Ajax请求。也许是在模糊处理时这样做,或者至少使用超时机制仅在用户停止键入例如400ms时才执行事件。)

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

$("#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);
   });
});

<select id="combo1" data-associated="combo4">

在哪里'combo.jsp'处理“
combo1Val”请求参数并返回适当的数据。如果使用此.replaceWith()方法,则需要返回填充组合的HTML,如下所示:

<select id="combo2" name="combo2">
   <option value="1">One</option>
   ...
</select>

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



 类似资料:
  • 我有两个组合框: 根据comboBoxMainCategory中选择的值,comboBoxSubCategory应填充相应的枚举。 如果comboBoxMainCategory选择“Europe”,则comboBoxSubCategory应填充SubCategory Europe。如果为“USA”,则带有子类别USA。 你是如何做到这一点的? 这是我的代码: 问题是,因为comboBoxSubCa

  • 说到编程或java,我只是一个完全的初学者。所以一开始,我的计划是使用JavaFX(结合场景构建器)创建一个窗口,在那里我有一个按钮,可以引导我进入另一个窗口,在那里我有一个组合框。我谷歌了几个小时,想找到一种方法来填充组合框,但我找到的所有解决方案都不适合我。这就是为什么我认为我在这里犯了一些错误,我希望你能以某种方式帮助我。或者在列表中给我一个提示,我应该学习/阅读什么才能自己找到解决方案。首

  • 我想在一个组合框中填充一些数据。这很好。但是,我想动态地改变组合框中的数据。 目前我有一个表,在组合框中,我在表列中显示数据的唯一值。现在,表数据存储在静态可观察列表变量中。我想根据表中显示的数据更改组合框中的数据。也就是说,如果存储表数据的静态可观察列表发生更改,我希望在没有手动干预的情况下更改组合框数据。 如果没有单独的静态变量用于组合框,这是否可能?

  • 我正在尝试使用两个ttk组合框从sqlite数据库中获取数据。我设法使用combo_division()函数在一个名为的组合框中列出项目。现在我试图对第二个名为产品菜单的组合框做类似的事情,但是列表需要根据组合框中的第一个选定项目缩小范围。 为了让SQL查询传递第二个组合框所需的信息,我想到了这样的东西: 到目前为止两个组合框的代码:

  • 我的用户控件上有两个组合框。我的目标是,当第一个被选中(里面有一个项目)时,第二个应该处于活动状态。以下是代码片段: 当第一个是项目选择时,如何激活第二个组合框?

  • 问题内容: 在对话框中,如果选中了某个组合,则需要显示一组控件,否则显示另一组控件。即我需要2层,并且当组合被选中/未选中时,我需要在它们之间切换。我怎样才能做到这一点? 问题答案: CardLayout 为此,如下所示。

  • 问题内容: 遇到问题时,我用相同的模型填充了多个es,但是当我运行程序并从一个ComboBox中选择一个值时,它将为其余部分选择相同的值。 问题答案: 这是因为他们都参照相同的 模型 ,对任何变化 模型 会影响到所有其他的连击。 除了每个组合框都有它自己的之外,没有其他方法可以解决。

  • 我有3个组合框,当我选择第一个组合框时,我希望第二个组合框的第一项和第三个组合框被自动选择。当选择第二个组合框的第一项时,将触发第三个组合框的on选择事件,但参数未定义 当我选择第一个组合框的项目时,这里的是未定义的。当我选择第二个组合框的项目时,它不是 为什么?