Вход Регистрация
Файл: scripts/filterlist.js
Строк: 165
<?php
/*==================================================*
 $Id: filterlist.js,v 1.3 2003/10/08 17:13:49 pat Exp $
 Copyright 2003 Patrick Fitzgerald
 http://www.barelyfitz.com/webdesign/articles/filterlist/

 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *==================================================*/

function filterlist(selectobj) {

  
//==================================================
  // PARAMETERS
  //==================================================

  // HTML SELECT object
  // For example, set this to document.myform.myselect
  
this.selectobj selectobj;

  
// Flags for regexp matching.
  // "i" = ignore case; "" = do not ignore case
  // You can use the set_ignore_case() method to set this
  
this.flags 'i';

  
// Which parts of the select list do you want to match?
  
this.match_text true;
  
this.match_value false;

  
// You can set the hook variable to a function that
  // is called whenever the select list is filtered.
  // For example:
  // myfilterlist.hook = function() { }

  // Flag for debug alerts
  // Set to true if you are having problems.
  
this.show_debug false;

  
//==================================================
  // METHODS
  //==================================================

  //--------------------------------------------------
  
this.init = function() {
    
// This method initilizes the object.
    // This method is called automatically when you create the object.
    // You should call this again if you alter the selectobj parameter.

    
if (!this.selectobj) return this.debug('selectobj not defined');
    if (!
this.selectobj.options) return this.debug('selectobj.options not defined');

    
// Make a copy of the select list options array
    
this.optionscopy = new Array();
    if (
this.selectobj && this.selectobj.options) {
      for (var 
i=0this.selectobj.options.lengthi++) {

        
// Create a new Option
        
this.optionscopy[i] = new Option();

        
// Set the text for the Option
        
this.optionscopy[i].text selectobj.options[i].text;

        
// Set the value for the Option.
        // If the value wasn't set in the original select list,
        // then use the text.
        
if (selectobj.options[i].value) {
          
this.optionscopy[i].value selectobj.options[i].value;
        } else {
          
this.optionscopy[i].value selectobj.options[i].text;
        }

      }
    }
  }

  
//--------------------------------------------------
  
this.reset = function() {
    
// This method resets the select list to the original state.
    // It also unselects all of the options.

    
this.set('');
  }


  
//--------------------------------------------------
  
this.set = function(pattern) {
    
// This method removes all of the options from the select list,
    // then adds only the options that match the pattern regexp.
    // It also unselects all of the options.

    
var loop=0index=0regexpe;

    if (!
this.selectobj) return this.debug('selectobj not defined');
    if (!
this.selectobj.options) return this.debug('selectobj.options not defined');

    
// Clear the select list so nothing is displayed
    
this.selectobj.options.length 0;

    
// Set up the regular expression.
    // If there is an error in the regexp,
    // then return without selecting any items.
    
try {

      
// Initialize the regexp
      
regexp = new RegExp(patternthis.flags);

    } catch(
e) {

      
// There was an error creating the regexp.

      // If the user specified a function hook,
      // call it now, then return
      
if (typeof this.hook == 'function') {
        
this.hook();
      }

      return;
    }

    
// Loop through the entire select list and
    // add the matching items to the select list
    
for (loop=0loop this.optionscopy.lengthloop++) {

      
// This is the option that we're currently testing
      
var option this.optionscopy[loop];

      
// Check if we have a match
      
if ((this.match_text && regexp.test(option.text)) ||
          (
this.match_value && regexp.test(option.value))) {

        
// We have a match, so add this option to the select list
        // and increment the index

        
this.selectobj.options[index++] =
          new 
Option(option.textoption.valuefalse);

      }
    }

    
// If the user specified a function hook,
    // call it now
    
if (typeof this.hook == 'function') {
      
this.hook();
    }

  }


  
//--------------------------------------------------
  
this.set_ignore_case = function(value) {
    
// This method sets the regexp flags.
    // If value is true, sets the flags to "i".
    // If value is false, sets the flags to "".

    
if (value) {
      
this.flags 'i';
    } else {
      
this.flags '';
    }
  }


  
//--------------------------------------------------
  
this.debug = function(msg) {
    if (
this.show_debug) {
      
alert('FilterList: ' msg);
    }
  }


  
//==================================================
  // Initialize the object
  //==================================================
  
this.init();

}
?>
Онлайн: 0
Реклама