<input type="text" name="text" onblur="function()"/>
<select>
<option>
</option>
</select>
我想要的效果是当输入完文本框后,
调用javascript的function()方法,
function()用来调用后台java方法public list getList(){},把值给下拉框。
请问function方法怎么写??
希望朋友们能给个完整的例子给我看看!谢谢了
<select>
<option>
</option>
</select>
我想要的效果是当输入完文本框后,
调用javascript的function()方法,
function()用来调用后台java方法public list getList(){},把值给下拉框。
请问function方法怎么写??
希望朋友们能给个完整的例子给我看看!谢谢了
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script language="javascript">
var $ = document.getElementById;
window.onload = function(){
$("text1").onblur=function(){
$("sel1").options[0].innerHTML = this.value;
}
}
</script>
</head>
<body>
<input type="text" id="text1"/>
<select id="sel1">
<option></option>
</select>
</body>
</html>
我明白了,你需要通过ajax向服务器发出请求。
服务器接收请求后返回一查询的结果。
况且javascript也没有list型,只有array.
对于你的要求,可以用ajax调取java内容
java中做个转化方法.
将你java中的list组装然后转成String型或json型最后以String或xml的形式输出出去.
给你个方法,具体实现你看着弄:
import javax.servlet.jsp.PageContext;
import java.util.List;
import java.util.ArrayList;
public class ConvertAjax {
public ConvertAjax(PageContext pageContext) { }
public String GetList(){
List list=new ArrayList();
StringBuffer jsonString= new StringBuffer();
for(int i=0,len=list.size();i<len;i++){
jsonString.append("{value:'"+list.get(i)+"'},");//在这里我不知道你具体怎么格式化list
}
String ret=jsonString.toString();
ret=(ret.length()>0)?ret:ret.substring(0,ret.length()-1);
return ret;//输出形式应当是[{value:'1...'},{value:'1...'},{value:'1...'}]
}
}
jsp页面:getlist.jsp
<%@ page contentType="text/html;charset=utf-8" %><%@ page import="com.ConvertAjax "%><%
ConvertAjax ca = new ConvertAjax (pageContext);
out.print(ca.GetList());
%>
接受的js:ajax
var SuperHandler = function() {}; // implements AjaxHandler 实现AjaxHandler
SuperHandler.prototype = {
request: function(method, url, callback, action, postVars) {
var xhr = this.createXhrObject();
xhr.onreadystatechange = function() {
if(xhr.readyState !== 4) return;
(xhr.status === 200) ?
callback.success(xhr.responseText, xhr.responseXML) :
callback.failure(xhr.status);
};
xhr.open(method, url, true);
switch (action){//发送模式 0 简单提交 return string
case 0:{xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');break;}//发送模式 1 返回静态xml doc return xml
case 1:{xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=UTF-8');break;}//发送模式 1 获取静态doc return ??
case 2:{xhr.setRequestHeader("Content-Type","text/xml"); break;}//发送模式 2 获取静态doc return
case 3:{break;}//发送模式 2 获取静态doc return ??
default:{xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');break;}
}
if(method !== 'POST') postVars = null;
xhr.send(postVars);
},
createXhrObject: function() { // Factory method.
if(window.XMLHttpRequest){var objXMLHttp = new XMLHttpRequest();}else{
var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
for(var n = 0;n < MSXML.length;n++){try{ var objXMLHttp = new ActiveXObject(MSXML[n]); break; }catch(e1){}} }
// If we reach this point, none of the methods worked.
if(objXMLHttp){
return objXMLHttp;
}else{
throw new Error('SuperHandler: Could not create an XHR object.');
}
}
};
var $ = document.getElementById;//借用楼上的 嘿嘿
function getSelect(){
var serverAddress="getlist.jsp"
var postBody=null;
var postFlag="POST"
var exh=new SuperHandler();
exh.request(postFlag,serverAddress, callConvertList ,0,postBody)
exh=null;
}
var callConvertList ={
success: function() {
var doc = arguments[0];
var obj=new Function("return "+doc+";")
var json=obj();
//在这里实现了更新slect
$("sel1").length=0;
for(var i=0,len=json.length;i<len;i++){
//你看着实现吧$("sel1").options[i]....
}
return ;
},
failure: function(statusCode) { alert("没有记录") ; }
};
现在想做google式的下拉提示,且能用键盘选择
不知道我的方法合适吗?
现在我停在了生成下拉框这?