<input type="text" name="text" onblur="function()"/>
<select>
<option>
</option>
</select>
我想要的效果是当输入完文本框后,
调用javascript的function()方法,
function()用来调用后台java方法public list getList(){},把值给下拉框。
请问function方法怎么写??
希望朋友们能给个完整的例子给我看看!谢谢了

解决方案 »

  1.   

    你想要的效果是这样的吗?
    <!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>
      

  2.   

    不是啊,我要把java方法中的list用javascript给下拉框啊
      

  3.   

    HOHO.
    我明白了,你需要通过ajax向服务器发出请求。
    服务器接收请求后返回一查询的结果。
      

  4.   

    javascript的数据字典以及语言类型和java的差别很大.java中list型是没办法转化成javascript的.
    况且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("没有记录")  ; } 
    };
      

  5.   

    楼上,java List,我用dwr调用后,在javascrit中用list[i],可以取得值(List中全是String)。
    现在想做google式的下拉提示,且能用键盘选择
    不知道我的方法合适吗?
    现在我停在了生成下拉框这?