在jsp中有一个 text,在页面text中写入数字 通过ajax会将写入的数字计算后返回给页面.当然写入text中的值是变化的.
请问,通过js的什么方法可以将text中变化的值传给ajax?
例如:text中写入 10  ----ajax给后台计算后返回页面12
     如果在10后又加了5,text中是15--------ajax给后台计算后返回页面17(下班前结帖)

解决方案 »

  1.   

    onchange?楼上的几位的意思是 只用text中有改变 就会触发onchange事件 然后进行处理对吗
      

  2.   

    jsp代码:
    <td class="td2">卡类型名称:</td>
    <td class="td3"><html:text property="cardTypeName" onblur="return doCheck();" styleClass="txt1"/></td><script Language="JavaScript">
    var req;

    function doCheck(){
    var cardTypeName = document.getElementById('cardTypeName').value;
             var url = '../basedata/cardtype.do?method=doContainName&&cardTypeName=' + cardTypeName;
              if(window.XMLHttpRequest)
                    {
                        req=new XMLHttpRequest();
                    }else if(window.ActiveXObject)
                    {
                        req=new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    
                    if(req)
                    {
                        req.open("GET",url,true);
                        req.onreadystatechange=callback;
                        req.send(null);
                    }
    }

    function callback()
            {
                if(req.readyState == 4)
                {
                    if(req.status == 200)
                    {
                        showResponse();
                    }else{
                        alert("Not able to retrieve description"+req.statusText);
                    }
                }
            }

    function showResponse(){
    var txt=req.responseText;
    if(txt=="1"){
    alert("卡类型名称已存在,请选择其他名称!");
    cardTypeName=document.getElementById('cardTypeName');
    cardTypeName.value="";
    }else{
    }
    } </script>
    Java代码:
    /** 
     * 判断卡类型对象名称是否存在
     */
    public ActionForward doContainName(
    ActionMapping mapping,
    ActionForm form,
    HttpServletRequest req,
    HttpServletResponse res){
    String cardTypeName=req.getParameter("cardTypeName");
    List ctList=cardTypeService.getAll();
    List ctNameList=new ArrayList();

    Iterator it=ctList.iterator();
    while(it.hasNext()){
    CardType ct=(CardType)it.next();
    String name=ct.getCardTypeName();
    ctNameList.add(name);
    }
    String s="";
    if(ctNameList.contains(cardTypeName)){
    s="1";
    }else{
    s="2";
    }

    res.setContentType("text/xml;charset=GB2312");
    res.setHeader("Cache-Control","no-cache");

    try {
    res.getWriter().write(s);
    } catch (Exception e) {
    }

    return null;
    }
      

  3.   

    只要前台text中有值  就会传递给后台 onchange 能作到吗
      

  4.   

    onchange会频繁的访问后台。你想想,你在文本框输入一个数字,这是就会用ajax访问后台。如果你输入100,那么你的后台就会有3此访问。但onblurs是当你离开这个文本框时,才发生动作。你想想谁要好一些。
      

  5.   

    楼上正解,说的很对,
    在onblurs事件里做请求
      

  6.   

    onblurs是正解.离开的时候再做处理.
      

  7.   

    貌似应该是onblur事件吧?(onblurs?)
      

  8.   

    乱讲!!!
    onKeyUp,onKeyDown,onKeyPress.总之这三个里面,楼住可以自己去搜一下,根据需要应用~
      

  9.   

    楼主要求text中的值改变了才传给后台,我认为用onchange合适,onblur是在焦点离开时就往后台传数据,也就是不改变它也传,这与楼主的要求不符啊:)
      

  10.   

    回rickhunterchen(千山鸟飞绝):
    onchange事件并不是敲一下键盘就触发一次,而是当焦点离开text时如果值有变化才触发的:)
      

  11.   

    <script language="javascript">
    function change(){
    alert("change");
    }
    function blura(){
    alert("blur");
    }
    </script>
    <input type="text" onchange="change();">
    <input type="text" onblur="blura();">
      

  12.   

    回rickhunterchen(千山鸟飞绝):
    onchange事件并不是敲一下键盘就触发一次,而是当焦点离开text时如果值有变化才触发的:)
    ====================================================================================
    看来是我的认识错误了,呵呵。我把onchange当作onkeyup了。不好意思。
      

  13.   

    貌似onchange和onblur也可以实现
      

  14.   

    用onchange触发可以,用onblur触发应该更好些。
      

  15.   

    看你喜欢用什么事件来触发了dom.onXXX = function() {}
      

  16.   

    楼主要求text中的值改变了才传给后台,我认为用onchange合适,onblur是在焦点离开时就往后台传数据,也就是不改变它也传,这与楼主的要求不符啊:)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    变不变可以自己判断的。
      

  17.   

    对于text来说
    onchange是失去焦点以后才会触发,所以根本没什么用
      

  18.   

    谢谢各位的回答.
      无论是onchange 还是onblur 都必须是在失去焦点的时候才会触发事件.
    有没有不在失去焦点的时候就可以触发事件. 例如text中 先输入1 光标没有移开 接着又输入2... 这样事件触发的方法.