gpt4 book ai didi

javascript - 基于另一个组合框选择自动填充组合框

转载 作者:行者123 更新时间:2023-11-28 10:01:10 26 4
gpt4 key购买 nike

我正在基于 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,您可以简化现有代码很多 - 我认为您从标记问题的方式来看是这样做的。以下内容将替换您显示的所有代码,而且您不需要在 html 中使用内联 onkeyup:

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

哪里$.get()是 jQuery 的简单 Ajax 方法之一。它将数据从第二个参数传递到第一个参数中的 url,当响应返回时,它会调用第三个参数中的函数(这类似于您的 stateChange() 函数,除了jQuery 为您测试状态并仅在准备好时调用该函数)。

(顺便说一句,我不建议在每次按键时都发出新的 Ajax 请求。也许在模糊时执行此操作,或者至少使用超时机制仅在用户停止输入(例如 400 毫秒)时执行事件.)

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

$("#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() method它需要返回填充组合的 HTML,如下所示:

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

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

关于javascript - 基于另一个组合框选择自动填充组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9187971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com