jquery.tagto.js
上传用户:saigedz
上传日期:2019-10-14
资源大小:997k
文件大小:2k
源码类别:

中间件编程

开发平台:

HTML/CSS

  1. //Author: Realazy
  2. //http://realazy.org/blog/ (chinese)
  3. jQuery.arrRemove = function(arr, rm){
  4.     for (var i = 0, n = 0; i < arr.length; ++i){
  5.         if (arr[i] != rm)
  6.             arr[n++] = arr[i];
  7.     }
  8.     arr.length--;
  9. }
  10. //usage: jQuery(from).tagTo(target, seperator)
  11. //from contain the tags(use a links), target must be assigned and its type must be input type="text" or textarea
  12. //seperator can be "-", "," and space etc, if not assign, the default seperator is ","
  13. //tclass is the class name of the tag which is currently selected, if not assign, the default class name is "selected"
  14. jQuery.fn.tagTo = function(target, seperator, tclass){
  15.     if ("string" == typeof target) target = jQuery(target);
  16.     seperator = arguments[1] || ",";
  17.     tclass = arguments[2] || "selected";
  18.     var tagname = target.get(0).nodeName.toLowerCase();
  19.     if (tagname == "input" || tagname == "textarea"){
  20.         jQuery('a', this).click(function(){
  21.             if (jQuery.trim(target.val()) == ''){
  22.                 target.val(jQuery(this).text());
  23.                 jQuery(this).addClass(tclass);
  24.             } else {
  25.                 var arr = target.val().split(seperator);    
  26.                 var isInArr = false;
  27.                 var position;
  28.                 for (var i = 0, n = arr.length; i < n; ++i) {
  29.                     if (jQuery.trim(arr[i]) == jQuery(this).text()){
  30.                         isInArr = true;
  31.                         position = i;
  32.                         break;
  33.                     }
  34.                 }
  35.                 if (isInArr == true){
  36.                     jQuery.arrRemove(arr, arr[position]);
  37.                     jQuery(this).removeClass(tclass);
  38.                 } else {
  39.                     arr.push(jQuery(this).text());
  40.                     jQuery(this).addClass(tclass);
  41.                 }
  42.                 target.val(arr.join(seperator));
  43.             }
  44.             return false;
  45.         }); 
  46.     } else {
  47.         throw "target must be an text area";
  48.     }