⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ajaxtags.js

📁 实现图书的借阅和管理信息化
💻 JS
📖 第 1 页 / 共 3 页
字号:
  },  getUpdatedChoices: function() {   if (isFunction(this.options.preFunction)){ this.options.preFunction();}      // preFunction can cancelExecution set this.cancelExecution = true;	  if (this.options.cancelExecution) {	    this.cancelExecution = false;	    this.stopIndicator();	    return ;      }    entry = encodeURIComponent(this.options.paramName) + '=' +       encodeURIComponent(this.getToken());    this.options.parameters = this.options.callback ?      this.options.callback(this.element, entry) : entry;    // parse parameters and do replacements    var params = buildParameterString(this.options.defaultParams);    if (!isEmpty(params) || (isString(params) && params.length > 0)) {      this.options.parameters += '&' + params;    }    new Ajax.Request(this.url, this.options);  },  onComplete: function(request) {    var parser = this.options.parser;    parser.load(request);    this.updateChoices(parser.content);  } });AjaxJspTag.Autocomplete = Class.create();AjaxJspTag.Autocomplete.prototype = Object.extend(new AjaxJspTag.Base(), {  initialize: function(url, options) {    this.url = url;    this.setOptions(options);    // create DIV    new Insertion.After(this.options.source, '<div id="' + this.options.divElement + '" class="' + this.options.className + '"></div>');    this.execute();  },  setOptions: function(options) {    this.options = Object.extend({      divElement: "ajaxAuto_" + options.source,      indicator: options.indicator || '',      parameters: options.parameters || '',      parser: options.parser ? options.parser : new ResponseXmlToHtmlListParser(),      handler: options.handler ? options.handler : this.handler    }, options || {});  },  execute: function(e) {      // preFunction moved bevor request now    var obj = this; // required because 'this' conflict with Ajax.Request    var aj = new Ajax.XmlToHtmlAutocompleter(                     this.options.source,                     this.options.divElement,                     this.url, {minChars: obj.options.minimumCharacters,                                tokens: obj.options.appendSeparator,                                indicator: obj.options.indicator,                                parameters: obj.options.parameters,                                evalScripts: true,                                preFunction: obj.options.preFunction,                                parser: obj.options.parser,                                afterUpdateElement: function(inputField, selectedItem) {                                  obj.options.handler(null, {                                    selectedItem: selectedItem,                                    tokens: obj.options.appendSeparator,                                    target: obj.options.target,                                    inputField: inputField,                                    postFunction: obj.options.postFunction,                                    list:obj.options.parser.getArray(),                                    options: obj.options,                                    autocomplete:aj                                    }                                  );                                }                               }             );  },  handler: function(request, options) {    if (options.target) {      if (options.tokens) {        if ($(options.target).value.length > 0) {          $(options.target).value += options.tokens;        }        $(options.target).value += options.selectedItem.id;      } else {        $(options.target).value = options.selectedItem.id;      }    }    options.selectedIndex = options.autocomplete.index;    options.selectedObject = options.list[options.autocomplete.index];        if (isFunction(options.postFunction)) {      //Disable onupdate event handler of input field      //because, postFunction can change the content of      //input field and get into eternal loop.      var onupdateHandler = $(options.inputField).onupdate;      $(options.inputField).onupdate = '';            options.postFunction();      //Enable onupdate event handler of input field      $(options.inputField).onupdate = onupdateHandler;    }  }});/** * TOGGLE TAG */AjaxJspTag.Toggle = Class.create();AjaxJspTag.Toggle.prototype = Object.extend(new AjaxJspTag.Base(), {  initialize: function(url, options) {    this.url = url;    this.setOptions(options);    // create message DIV    if (this.options.messageClass) {      this.messageContainer = new Insertion.Top($(this.options.source),        '<div id="'+ this.options.source +'_message" class="' + this.options.messageClass +'"></div>');    }    this.setListeners();    addAjaxListener(this);  },  reload: function () {    this.setListeners();  },    setOptions: function(options) {    this.options = Object.extend({      parameters: options.parameters || 'rating={ajaxParameter}',      parser: options.parser ? options.parser : new ResponseTextParser(),      handler: options.handler ? options.handler : this.handler,      updateFunction: options.updateFunction || false    }, options || {});    this.ratingParameter = AJAX_DEFAULT_PARAMETER;  },  setListeners: function() {    // attach events to anchors    var elements = $(this.options.source).getElementsByTagName('a');    for (var j=0; j<elements.length; j++) {      elements[j].onmouseover = this.raterMouseOver.bindAsEventListener(this);      elements[j].onmouseout = this.raterMouseOut.bindAsEventListener(this);      elements[j].onclick = this.raterClick.bindAsEventListener(this);    }  },  getCurrentRating: function(list) {    var selectedIndex = -1;    for (var i=0; i<list.length; i++) {      if (Element.hasClassName(list[i], this.options.selectedClass)) {        selectedIndex = i;      }    }    return selectedIndex;  },  getCurrentIndex: function(list, elem) {    var currentIndex = 0;    for (var i=0; i<list.length; i++) {      if (elem == list[i]) {        currentIndex = i;      }    }    return currentIndex;  },  raterMouseOver: function (e) {    // get containing div    var container = Event.findElement(e, 'div');    // get list of all anchors    var elements = container.getElementsByTagName('a');    // find the current rating    var selectedIndex = this.getCurrentRating(elements);    // find the index of the 'hovered' element    var currentIndex = this.getCurrentIndex(elements, Event.element(e));    // set message    if (this.options.messageClass) {      $(container.id+'_message').innerHTML = Event.element(e).title;    }    // iterate over each anchor and apply styles    for (var i=0; i<elements.length; i++) {      if (selectedIndex > -1) {        if (i <= selectedIndex && i <= currentIndex)          Element.addClassName(elements[i], this.options.selectedOverClass);        else if (i <= selectedIndex && i > currentIndex)          Element.addClassName(elements[i], this.options.selectedLessClass);        else if (i > selectedIndex && i <= currentIndex)          Element.addClassName(elements[i], this.options.overClass);      } else {        if (i <= currentIndex) Element.addClassName(elements[i], this.options.overClass);      }    }  },  raterMouseOut: function (e) {    // get containing div    var container = Event.findElement(e, 'div');    // get list of all anchors    var elements = container.getElementsByTagName('a');    // clear message    if (this.options.messageClass) {      $(container.id+'_message').innerHTML = '';    }    // iterate over each anchor and apply styles    for (var i=0; i<elements.length; i++) {      Element.removeClassName(elements[i], this.options.selectedOverClass);      Element.removeClassName(elements[i], this.options.selectedLessClass);      Element.removeClassName(elements[i], this.options.overClass);    }  },  raterClick: function (e) {    // get containing div    var container = Event.findElement(e, 'div');    // get list of all anchors    var elements = container.getElementsByTagName('a');    // find the index of the 'hovered' element    var currentIndex = this.getCurrentIndex(elements, Event.element(e));    // update styles    for (var i=0; i<elements.length; i++) {      Element.removeClassName(elements[i], this.options.selectedOverClass);      Element.removeClassName(elements[i], this.options.selectedLessClass);      Element.removeClassName(elements[i], this.options.overClass);      if (i <= currentIndex) {        if (Element.hasClassName(container, 'onoff')              && Element.hasClassName(elements[i], this.options.selectedClass)) {          Element.removeClassName(elements[i], this.options.selectedClass);        } else {          Element.addClassName(elements[i], this.options.selectedClass);        }      } else if (i > currentIndex) {        Element.removeClassName(elements[i], this.options.selectedClass);      }    }    // send AJAX    var ratingToSend = elements[currentIndex].title;    if (Element.hasClassName(container, 'onoff')) {      // send opposite of what was selected      var ratings = this.options.ratings.split(',');      if (ratings[0] == ratingToSend) ratingToSend = ratings[1];      else ratingToSend = ratings[0];      elements[currentIndex].title = ratingToSend;    }    this.execute(ratingToSend);    // set field (if defined)    if (this.options.state) {      $(this.options.state).value = ratingToSend;    }  },  execute: function(ratingValue) {    if (isFunction(this.options.preFunction)){ this.options.preFunction();}	if (this.options.cancelExecution) {	    this.cancelExecution = false;	    return ;      }    // parse parameters and do replacements    var ajaxParameters = this.options.parameters || '';    var re = new RegExp("(\\{"+this.ratingParameter+"\\})", 'g');    ajaxParameters = ajaxParameters.replace(re, ratingValue);    var params = buildParameterString(ajaxParameters);    var obj = this; // required because 'this' conflict with Ajax.Request    var toggleStateFunc = this.getToggleStateValue;    var aj = new Ajax.Request(this.url, {      asynchronous: true,      method: 'get',      evalScripts: true,      parameters: params,      onSuccess: function(request) {        obj.options.parser.load(request);        var results = obj.options.parser.itemList;        obj.options.handler(request, {items: results});      },      onFailure: function(request) {        if (isFunction(obj.options.errorFunction)){ obj.options.errorFunction();}      },      onComplete: function(request) {        if (isFunction(obj.options.postFunction)) {obj.options.postFunction();}      }    });  },  handler: function(request, roptions) {  //daten in items  	var erg = roptions.items[0][0] ; // on/off / 1,2,3  	try  {  	this.updateFunction(erg);    // TODO: anything?    } catch (e) {} // muss nicht forhanden sein  },  getToggleStateValue: function(name, results) {    for (var i=0; i<results.length; i++) {      if (results[i][0] == name) {return results[i][1];}    }    return "";  }});/** * CALLOUT TAG */AjaxJspTag.Callout = Class.create();AjaxJspTag.Callout.prototype = Object.extend(new AjaxJspTag.Base(), {  initialize: function(url, options) {    this.url = url;    this.setOptions(options);    this.setListeners();    addAjaxListener(this);  },  reload: function () {    this.setListeners();  },    setOptions: function(options) {    this.options = Object.extend({      parameters: options.parameters || '',      overlib: options.overlib || AJAX_CALLOUT_OVERLIB_DEFAULT,      parser: options.parser ? options.parser : new ResponseXmlToHtmlParser(),      handler: options.handler ? options.handler : this.handler,      doPost: options.doPost? true : false ,      openEvent: options.openEvent ? options.openEvent : "mouseover",      closeEvent: options.closeEvent ? options.closeEvent : "mouseout"    }, options || {});    this.calloutParameter = AJAX_DEFAULT_PARAMETER;  },  setListeners: function() {    if (this.options.sourceClass) {      var elemList = document.getElementsByClassName(this.options.sourceClass);      for (var i=0; i<elemList.length; i++) {        eval("elemList[i].on"+this.options.openEvent+" = this.calloutOpen.bindAsEventListener(this)");        eval("elemList[i].on"+this.options.closeEvent+" = this.calloutClose.bindAsEventListener(this)");      }    }  },  calloutOpen: function(e) {    this.execute(e);  },  calloutClose: function(e) {    nd();  },  execute: function(e) {    if (isFunction(this.options.preFunction)){ this.options.preFunction();}	if (this.options.cancelExecution) {	    this.cancelExecution = false;	    return ;      }    // parse parameters and do replacements    var ajaxParameters = this.options.parameters || '';    var re = new RegExp("(\\{"+this.calloutParameter+"\\})", 'g');    var elem = Event.element(e);    if (elem.type) {      ajaxParameters = ajaxParameters.replace(re, $F(elem));    } else {      ajaxParameters = ajaxParameters.replace(re, elem.innerHTML);    }    var params = buildParameterString(ajaxParameters);    var obj = this; // required because 'this' conflict with Ajax.Request    var aj = new Ajax.Request(this.url, {      asynchronous: true,      method: obj.options.doPost ? 'post':'get',      evalScripts: true,      parameters: params,      onSuccess: function(request) {        obj.options.parser.load(request);        obj.options.handler(obj.options.parser.content, {title: obj.options.title,                                                         overlib: obj.options.overlib});      },      onFailure: function(request) {        if (isFunction(obj.options.errorFunction)){ obj.options.errorFunction();}      },      onComplete: function(request) {        if (isFunction(obj.options.postFunction)){ obj.options.postFunction();}      }    });  },  handler: function(content, options) {  if (content != "") { // #4     if (options.overlib) {      if (options.title) {        return eval("overlib(content,CAPTION,options.title,"+options.overlib+")");      } else {        return eval("overlib(content,"+options.overlib+")");      }    } else {      if (options.title) {        return overlib(content,CAPTION,options.title);      } else {        return overlib(content);      }    }  } }});

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -