<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    昨天下午突然接到公司通知,以前處理的XX物資系統(tǒng)的部門,班組,工程,供應(yīng)廠商部分都需要修改成Ajaxtags的autocomplete來完成,用戶需要輸入查詢碼來進(jìn)行索引,于是開始動(dòng)手研究Ajaxtags.
    Ajaxtags是基于prototype.js的簡(jiǎn)化AJAX開發(fā)的組件,可以通過標(biāo)簽來來完成以前非常復(fù)雜的事情.
    通過DOME和原代碼的分析,我感覺,他的簡(jiǎn)化過于局限,沒有非常好擴(kuò)展性,只能做一些簡(jiǎn)單的處理,比方他的AjaxXmlBuilder的toString()方法可以返回一種簡(jiǎn)單的XML格式,而且過于簡(jiǎn)單:

    <?xml version="1.0" encoding="UTF-8"?>
    <ajax-response>
      
    <response>
        
    <item>
          
    <name>Record 1</name>
          
    <value>1</value>
        
    </item>
        
    <item>
          
    <name>Record 2</name>
          
    <value>2</value>
        
    </item>
        
    <item>
          
    <name>Record 3</name>
          
    <value>3</value>
        
    </item>
      
    </response>
    </ajax-response>

    他在autocomplete處理時(shí)會(huì)用到這中XML文件:
    以下是在他的JS中解析XML的部分
         var name = items[i].getElementsByTagName("name")[0].firstChild.nodeValue;
          
    var value = items[i].getElementsByTagName("value")[0].firstChild.nodeValue;
    由此可以看出他過于簡(jiǎn)單,如果我有多個(gè)屬性需要放入自動(dòng)下拉菜單中怎么辦?
    好辦,我們擴(kuò)展!
    自己造一個(gè)AjaxXmlBuilder,繼承一下就可以了,把toString()方法重載掉~讓他組一個(gè)我要的XML文件出來,然后再到頁(yè)面上自己解吸他`就OK了~
    我的類:
    package com.kaiwang.mmis.ajax.autoselect;

    import java.lang.reflect.InvocationTargetException;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    import java.util.List;

    import org.ajaxtags.helpers.AjaxXmlBuilder;
    import org.apache.commons.beanutils.BeanUtils;

    /**
     * 重載ajaxxmlbuilder封裝出新的xml文件
     * 
    @author Gary.lee Jan 16, 2006
     
    */

    public class ManufacturerXmlBuilder extends AjaxXmlBuilder implements MisAjaxXmlBuilder  {
        
        
    private String encoding = "UTF-8";
        
    private List items = new ArrayList();
        
        
    public ManufacturerXmlBuilder addItems(Collection collection, String nameProperty, String valueProperty, String seachCodeProperty) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
            
    for (Iterator iter = collection.iterator(); iter.hasNext();) {
                Object element 
    = (Object) iter.next();
                String name 
    = BeanUtils.getProperty(element, nameProperty);
                String value 
    = BeanUtils.getProperty(element, valueProperty);
                String seachCode 
    = BeanUtils.getProperty(element, seachCodeProperty);
                items.add(
    new MisAjaxBaseItem(name, value, seachCode));
              }

            
    return this;
        }


        
    /**
         * 
    @see java.lang.Object#toString()
         
    */

        
    public String toString() {
          StringBuffer xml 
    = new StringBuffer().append("<?xml version=\"1.0\"");
          
    if (encoding != null{
            xml.append(
    " encoding=\"");
            xml.append(encoding);
            xml.append(
    "\"");
          }

          xml.append(
    " ?>");

          xml.append(
    "<ajax-response>");
          xml.append(
    "<response>");
          
    for (Iterator iter = items.iterator(); iter.hasNext();) {
           MisAjaxBaseItem item 
    = (MisAjaxBaseItem) iter.next();
          xml.append(
    "<item>");
          xml.append(
    "<name>"); 
          xml.append(
    "<![CDATA[");
          xml.append(item.getName());
          xml.append(
    "]]>");
          xml.append(
    "</name>");
          xml.append(
    "<value>");
          xml.append(
    "<![CDATA[");
          xml.append(item.getId());
          xml.append(
    "]]>");
          xml.append(
    "</value>");
          xml.append(
    "<searchcode>");
          xml.append(
    "<![CDATA[");
          xml.append(item.getSearchCode());
          xml.append(
    "]]>");
          xml.append(
    "</searchcode>");
            xml.append(
    "</item>"); 
          }

          xml.append(
    "</response>");
          xml.append(
    "</ajax-response>");
          
    return xml.toString();
        }

    }


    這樣就有了我要的XML文件格式了~再修改JS
          var name = items[i].getElementsByTagName("name")[0].firstChild.nodeValue;
          
    var value = items[i].getElementsByTagName("value")[0].firstChild.nodeValue;
          
          
    //新增加一個(gè)searchcode部分的解析
          var searchCode = items[i].getElementsByTagName("searchcode")[0].firstChild.nodeValue;
          
          
    var li = document.createElement("li");
          
    var liIdAttr = document.createAttribute("id");
          li.setAttribute(
    "id", value);
          
    //將searchcode部分+name輸出到文本區(qū)域中
          var liText = document.createTextNode(name+'('+searchCode+')');
    大家可以看到,我加入了一個(gè)searchCode的東西就是在下拉框中把searchCode打印出來!
    效果~~~~~~我抓張圖出來看看:

    樣子還可以吧`!
    用過autocomplete的朋友應(yīng)該知道如果僅僅是鼠標(biāo)點(diǎn)擊以后這個(gè)框是不會(huì)出來了~
    因?yàn)樗J(rèn)的事件是"keyup",也就是當(dāng)有輸入的時(shí)候才出來.初始化的部分在JS中:
     setOptions: function(options) {
        
    this.options = {
          sourceElem: $(options.source),
          targetElem: $(options.target),
          eventType: options.eventType 
    ? options.eventType : "keyup",
          appendValue: evalBoolean(options.appendValue),
          appendSeparator: options.appendSeparator 
    || " ",
          forceSelection: evalBoolean(options.forceSelection)
        }
    .extend(options || {});
    而且這里如果換成"force"的話,在下拉框中的上下鍵和回車就失效了,沒關(guān)系!解決了!在調(diào)用的時(shí)候把eventType:"focus"   加上(這個(gè)屬性官方文檔中并沒有說~)然后找到:
     attachBehaviors: function(element, event, listener, obj) {
        
    if (isArray(element)) {
          
    for (var i=0; i<element.length; i++{
            eval(
    "element[i].on"+event+" = listener.bindAsEventListener(obj)");
          }

        }
     else {
          eval(
    "element.on"+event+" = listener.bindAsEventListener(obj)");
          eval(
    "element.onkeyup = listener.bindAsEventListener(obj)");
        }

      }
    大家可以看到我在下面又追加了一個(gè)“keyup”的屬性,這樣既在得到焦點(diǎn)的時(shí)候可以出來,也可以在用上下建的時(shí)候選擇,還可以做篩選~還有就是我沒有實(shí)用標(biāo)簽,我讀了它的DOME以后發(fā)現(xiàn)它僅僅是封裝了JS而已,用了標(biāo)簽以后感覺怪怪的,為什么JS的調(diào)用也要用標(biāo)簽封裝呢??jī)H僅是可以在標(biāo)簽中實(shí)用EL語(yǔ)法·但是又有多少兄弟會(huì)用呢?最主要的是它的標(biāo)簽中好想沒有“eventType”這個(gè)屬性~,看看我的調(diào)用:
    //班站編號(hào)
    new AjaxJspTag.Autocomplete("<%=request.getContextPath()%>/autoSelectTeam.do"{
                                                parameters:
    "team={team_Name},depId={department_Id}",
                                                progressStyle:
    "throbbing",
                                                target:
    "team_Id",
                                                className:
    "autocomplete",
                                                source:
    "team_Name",
                                                forceSelection:
    "yes",
                                                eventType:
    "focus"            
    }
    );

    要注意的是parameters這里多參數(shù)實(shí)用了,號(hào)隔開,這樣到ACTION中就可以用depId接到值了~這個(gè)東西在官方文檔中也沒有說出來,還是同事發(fā)現(xiàn)的~!

    本人文采不行``大家見諒,希望文章對(duì)用ajaxTags的朋友有寫幫助,我的原則就是·能改的我都改·只要我能用就可以了!

    我再改~前面說了,我修改了AJAX基本的JS文件``但是他的其他屬性就不能用了~~~很痛苦,所以晚上突然想到,我專門為他加一個(gè)方法就可以了~

    //事件觸發(fā)(修改增加一個(gè)keyup事件auto專用)
      attachBehaviorsAuto: function(element, event, listener, obj) {
          eval(
    "element.on"+event+" = listener.bindAsEventListener(obj)");
          eval(
    "element.onkeyup = listener.bindAsEventListener(obj)");
      }

    再改一下`他調(diào)用的地方,換成這個(gè)方法就好了`噎!

    Feedback

    # re: 我玩Ajaxtags(autocomplete)  回復(fù)  更多評(píng)論   

    2006-01-20 16:23 by 過客007
    好深?yuàn)W……

    # re: 我玩Ajaxtags(autocomplete)  回復(fù)  更多評(píng)論   

    2006-01-21 23:14 by fd
    你所說的不用去該都能夠?qū)崿F(xiàn),只要在頁(yè)面加上自己定義的js

    # re: 我玩Ajaxtags(autocomplete)  回復(fù)  更多評(píng)論   

    2006-08-15 17:44 by 菜鳥!!!
    請(qǐng)教樓主
    這個(gè)解析函數(shù),在那個(gè)文件里,希望指點(diǎn)指點(diǎn)
    var name = items[i].getElementsByTagName("name")[0].firstChild.nodeValue;
    var value = items[i].getElementsByTagName("value")[0].firstChild.nodeValue;

    # re: 我玩Ajaxtags(autocomplete)  回復(fù)  更多評(píng)論   

    2007-02-03 18:35 by Janny
    很好,道理很易懂,只是實(shí)際工作中經(jīng)常管不住自己。看來需要經(jīng)常提醒自己。
    謝謝!

    # re: 我玩Ajaxtags(autocomplete)  回復(fù)  更多評(píng)論   

    2007-04-21 20:59 by der
    <a href="http://www.shjp8.com">上海機(jī)票</a>,
    <a href="http://www.shjp8.com">上海打折機(jī)票</a>,
    <a href="http://www.dogstoreol.com">Dog Clothes</a> ,
    <a href="http://www.chongqing-life.com">chongqing</a>,
    <a href="http://www.yantai-life.com">yantai</a>,
    <a href="http://blog.hc360.com/ltg110">google左側(cè)排名</a>,
    <a href="http://sr321.blog.com.cn">google左側(cè)排名</a>,
    <a href="http://blog.5d.cn/user33/sr321">google左側(cè)排名</a>,
    <a href="http://sr321.blog.ccidnet.com">google左側(cè)排名</a>,
    <a href="http://blog.yesky.com/blog/sr321">google左側(cè)排名</a>,
    <a href="http://sr321.blog.soufun.com ">google左側(cè)排名</a>,
    <a href="http://googlefff.bokee.com">google左側(cè)排名</a>,
    <a href="http://mzyy888.blog.163.com">google排名優(yōu)化</a>,
    <a href="http://blog.zol.com.cn/googleleft">google排名優(yōu)化</a>,
    <a href="http://baidu-google.blog.sohu.com">google排名優(yōu)化</a>,
    <a href="http://baidu-google.blog.sohu.com">google排名優(yōu)化</a>,
    <a href="http://blog.sina.com.cn/u/1276417342">google排名優(yōu)化</a>,
    <a href="http://mzyy888.blog.china.alibaba.com/">google排名優(yōu)化</a>,
    <a href="http://blog.focus.cn/myblog/20291110.html">google左側(cè)排名</a>,
    <a href="http://ltg110.blog.hexun.com/">google排名</a>,
    <a href="http://www.sr321.com/">google左側(cè)排名</a>,
    <a href="http://www.sr321.net/">google左側(cè)排名</a>,
    <a href="http://www.google2007.com/">google左側(cè)排名</a>,

    # Pearl Jewelry  回復(fù)  更多評(píng)論   

    2007-06-22 19:46 by asdfdas
    asdfadf

    # Pearl Jewelry  回復(fù)  更多評(píng)論   

    2007-06-22 19:46 by Pearl Jewelry
    adfadsf

    # loose bead wholesale  回復(fù)  更多評(píng)論   

    2007-06-22 19:48 by loose bead wholesale
    adfadsfads

    # wholesale jewellery  回復(fù)  更多評(píng)論   

    2007-06-22 19:48 by wholesale jewellery
    adfadsfadsfad

    # wholesale bead  回復(fù)  更多評(píng)論   

    2007-06-22 19:49 by wholesale bead
    asdfasdf

    # wholesale pearls  回復(fù)  更多評(píng)論   

    2007-06-22 19:49 by wholesale pearls
    afafasdfasdfasdf

    # wholesale pearl  回復(fù)  更多評(píng)論   

    2007-06-22 19:50 by wholesale pearl
    adfasdfadsf

    # re: 我玩Ajaxtags(autocomplete) www.googleah.cn  回復(fù)  更多評(píng)論   

    2007-08-30 22:00 by www.googleah.cn
    專業(yè)從事GOOGLE左側(cè)、GOOGLE左側(cè)排名等搜索引擎優(yōu)化服務(wù),有多年實(shí)踐經(jīng)驗(yàn),價(jià)格實(shí)惠,有需要的朋友可以登陸http://www.googleah.cn或者來電聯(lián)系:0571-81562921,以及在線聯(lián)系QQ:76312063,相信選擇我們是你明智的選擇。需要做友情鏈接交換的朋友也可以聯(lián)系我www.haohome.com www.qjtogo.com www.luan.ah.cn www.21xcn.com

    # re: 我玩Ajaxtags(autocomplete) www.googleah.cn  回復(fù)  更多評(píng)論   

    2007-10-30 18:49 by www.googleah.cn
    專業(yè)從事GOOGLE左側(cè)、GOOGLE左側(cè)排名等搜索引擎優(yōu)化服務(wù),有多年實(shí)踐經(jīng)驗(yàn),價(jià)格實(shí)惠,有需要的朋友可以登陸http://www.googleah.cn或者來電聯(lián)系:0571-81562921,以及在線聯(lián)系QQ:76312063,相信選擇我們是你明智的選擇。需要做友情鏈接交換的朋友也可以聯(lián)系我www.haohome.com www.qjtogo.com www.luan.ah.cn www.21xcn.com

    # re: 我玩Ajaxtags(autocomplete)  回復(fù)  更多評(píng)論   

    2008-02-23 14:17 by runescape money
    eeee

    # re: 我玩Ajaxtags(autocomplete)  回復(fù)  更多評(píng)論   

    2008-02-23 14:17 by runescape gold
    wwww

    # 求助[未登錄]  回復(fù)  更多評(píng)論   

    2008-07-15 10:10 by 冰川
    你好,我也在改Ajaxtags(autocomplete),想請(qǐng)求你的幫助,問題如下:

    我的頁(yè)面需要自動(dòng)完成的部分,一個(gè)(inputA)在頁(yè)面頂部,一個(gè)(inputB)在頁(yè)面底部,A肯定是沒問題了,但B就不行,自動(dòng)完成的部分看不到了,所以想修改代碼,讓A朝下,而B朝上。

    在那幾個(gè)js文件中,哪部分是控制它們的位置的?

    樂意幫助的話,請(qǐng)致信:yanlei_bctn@qq.com

    posts - 19, comments - 31, trackbacks - 0, articles - 2

    Copyright © JavaXP

    主站蜘蛛池模板: 精品亚洲福利一区二区| 免费国产高清视频| 一级特黄录像免费播放肥| 亚洲婷婷在线视频| 亚洲精品成人无码中文毛片不卡| 女人18毛片水真多免费播放| 91高清免费国产自产| 99re6在线视频精品免费| 粉色视频成年免费人15次| 国产成人精品亚洲2020| 亚洲色图综合网站| 亚洲av成人无码久久精品| 精品国产亚洲男女在线线电影 | 亚洲乱码中文字幕久久孕妇黑人| 永久免费无码网站在线观看| 91在线视频免费看| AV无码免费永久在线观看| 免费国产黄网站在线观看可以下载| 中国videos性高清免费| 国产免费久久久久久无码| caoporm超免费公开视频| 免费视频成人国产精品网站| 美女免费视频一区二区三区| 亚洲欧美精品午睡沙发| 中文无码亚洲精品字幕| 中文字幕亚洲男人的天堂网络| 亚洲欧洲日本国产| 亚洲欧洲日韩国产| 亚洲成aⅴ人片在线观| 久久99亚洲网美利坚合众国| 亚洲色图综合网站| 亚洲丰满熟女一区二区v| 亚洲午夜国产精品| 国产成人精品亚洲2020| 自拍日韩亚洲一区在线| 亚洲av最新在线观看网址| 亚洲AV第一成肉网| 黄页网站在线免费观看| a一级爱做片免费| 99精品免费视品| 无码国产精品一区二区免费vr |