JS City Three-level linkage Ajax edition

Source: Internet
Author: User
Tags gettext

Write a mess: own record, not to use!

(Function (W, $) {//define Selectsimulation constructor var selectsimulation = function (Ele, opt) {this. $element = Ele , this.defaults = {' Len ': 3, ' Def ': [], ' Ajax ': [], ' dataname ': ' Data '            , ' bind ': [],//{text: ' Text ', Val: ' id '}; ' Isnullstr ': ' None '} this.options = $.extend ({}, This.defaults, opt)}//method for defining Selectsimulation Select  Simulation.prototype = {temp:function (str, obj) {return str.replace (/\{\$\w+\}/gi, function (matchs)                {var returns = Obj[matchs.replace (/\{\$/g, ""). Replace (/\}/g, "")];            Return (returns + "") = = "undefined"? "": Returns;        }); }, Info: {tempstr: ' <div class= ' select-s-val ' ><a class= ' text-box ' ></a><input type = "text" data-val= "" readonly= "readonly"/><a><i></i></a></div><div class= "          Select-s-a "></div>",  Tempstra: ' <a class= ' a-item ' data-val= ' {$val} ' data-text= ' {$text} ' >{$text}</a> ', returndata: []            },//main init:function () {var _this = this; this. $element. html (this.            INFO.TEMPSTR); if (_this.options.bind[0]) {_this. Info.tempstra = ' <a class= ' A-item "data-val=" {$ ' + _this.options.bind[0].val + '} "data-text=" {$ ' + _this.options.bind            [0].text + '} ' >{$ ' + _this.options.bind[0].text + '}</a> ';                } if (this.options.def[0] = = ' undefined ' && this.options.def.length = = = This.options.len) { for (var i = 0, j = this.options.len; I < J; i++) {This.options.def.push ({text: '--select--', Val                : '-1 '});                }} else {//alert (' cannot execute correctly ');            return false; }//Initializes the first container of this. Finddata (This.options.ajax[0].url, This.options.ajax[0].data, FunctioN (data) {//console.log (json.stringify (data)); var htmlstr = this.                Binddata (Data[this.options.dataname]);                var $element 0 = this. $element. EQ (0);                $element 0.attr ("Data-type", ' 0 ');                $element 0.find ("Div.select-s-a"). HTML (HTMLSTR);                var $element _input = $element 0.find ("input");                var $alist = $element 0.find ("A.a-item");                    $alist. Click (function () {$element _input.val ($ (this). attr (' Data-text '));                    $element _input.attr (' Data-val ', $ (this). attr (' Data-val ')); _this.                    Changedata.call (_this, (parseint ($element 0.attr (' data-type ') + 1), $ (this). attr (' Data-val '));                $ (this). Parent (). Hide ();            });            }); This.            Bindfocus ();        return this.Info.returndata;            },//Linkage changedata:function (item, val) {var _this = this; if (item >= this.optionS.len) {return;            } this.options.ajax[item].data[this.options.ajax[item].data[' def '] = val; This. Finddata (This.options.ajax[item].url, This.options.ajax[item].data, function (data) {//console.log (json.st                Ringify (data)); var htmlstr = this.                Binddata (Data[this.options.dataname]);                var $element 0 = this. $element. EQ (item);                $element 0.attr ("Data-type", item);                $element 0.find ("Div.select-s-a"). HTML (HTMLSTR);                var $element _input = $element 0.find ("input");                var $alist = $element 0.find ("A.a-item");                    $alist. Click (function () {$element _input.val ($ (this). attr (' Data-text '));                    $element _input.attr (' Data-val ', $ (this). attr (' Data-val ')); _this.                    Changedata.call (_this, (parseint ($element 0.attr (' data-type ') + 1), $ (this). attr (' Data-val '));          $ (this). Parent (). Hide ();      });                    if ($alist. length > 0) {$element _input.val ($alist. EQ (0). attr (' Data-text '));                    $element _input.attr (' Data-val ', $alist. EQ (0). attr (' Data-val ')); _this.                Changedata.call (_this, (parseint ($element 0.attr (' data-type ') + 1), $alist. EQ (0). attr (' Data-val ')); } else {$element _input.val (_this.options.isnullstr[item]? _this.options.isnullstr[item                    ]: _THIS.OPTIONS.ISNULLSTR);                $element _input.attr (' data-val ', ');        }            });            },//Data processing binddata:function (data) {if (data = = null) return ';            var _this = this;            var _strall = '; for (var i = 0, j = data.length; I < J; i++) {_strall + = _this.temp (_this.            Info.tempstra, Data[i]);        } return _strall; },//Data finddata:function via Ajax (URL, data, fn) {var _this = this;                $.ajax ({url:url, type: "Get", Data:data, DataType: "JSON",                Cache:false,//Disallow cache success:function (obj) {fn.call (_this, obj);        }            });            },//Analog system focus event bindfocus:function () {var _this = this;            this. $element. attr (' TabIndex ', ' 1 ');            var _isoftrue = [];                this. $element. each (function (item), var $element _input = $ (this). Find ("input");                $element _input.val (_this.options.def[item].text);                $element _input.attr (' Data-val ', _this.options.def[item].val);            _isoftrue.push (FALSE);            });                this. $element. Click (Function (event) {Event.preventdefault ();                Event.stoppropagation ();                var _$this = $ (this);      var _$selecta = _$this.find ("div.select-s-a");          var _$selectval = _$this.find ("Div.select-s-val");                    if (_$selecta.css (' display ') = = = ' None ') {_$selectval.removeclass (' Focuss '). addclass (' Focuss ');                _$selecta.show ();                    } else {_$selectval.removeclass (' Focuss ');                _$selecta.hide ();            }}). Hover (function () {_isoftrue[$ (this). Index ()] = true;            }, Function () {_isoftrue[$ (this). Index ()] = false;            });                this. $element. Focusout (function () {//alert ($ (this). Index () + ', ' +_isoftrue[$ (This). Index ()]);                if (_isoftrue[$ (this). Index ()]) return;                var _$this = $ (this);                var _$selecta = _$this.find ("div.select-s-a");                var _$selectval = _$this.find ("Div.select-s-val");                _$selectval.removeclass (' Focuss ');            _$selecta.hide ();         });   this. $element. Find ("Div.select-s-a"). Click (Function (event) {Event.preventdefault ();            Event.stoppropagation ();        });            }, Gettext:function () {var valuedata = [];                this. $element. each (function () {var $element _input = $ (this). Find ("input");            Valuedata.push ($element _input.val ());            });        return valuedata;            }, Getvalues:function () {var valuedata = [];                this. $element. each (function () {var $element _input = $ (this). Find ("input");            Valuedata.push ($element _input.attr (' Data-val '));            });        return valuedata; }}//Use the Selectsimulation object $.fn in the plug-in. Myselect = function (options) {//Create selectsimulation entity var _cselectsimulation = new Selectsimulation (This,        Options); if (typeof options! = ' object ' && options! = undefined) {return _cselectsimUlation[options] ();        } else {_cselectsimulation.init (); }}) (window, $);

//region display $ ("div.select-simulation").  Myselect ({' Len ': 3, ' def ': [{text: '--Please select the province ', Val:-1}, {text: '--Please select City ', Val:-1}, {text: '--Please select district/County ', Val:-1}], ' ajax ': [{url: ' Getarea ', data: {parentid:0}}, {url: ' Getarea ', data: {def: ' ParentID '}}, {u  RL: ' Getarea ', data: {def: ' ParentID '}}], ' bind ': [{text: ' AreaName ', Val: ' Areaid '}, {text: ' AreaName ', Val:    ' Areaid '}, {text: ' AreaName ', Val: ' Areaid '}], ' isnullstr ': [' no Province ', ' No city ', ' no Region/County '}); $ ("#hudezi"). Click (function () {alert ("Div.select-simulation").        Myselect (' getValues ') [0]); Alert ($ ("div.select-simulation").        Myselect (' getValues ') [1]); Alert ($ ("div.select-simulation").        Myselect (' getValues ') [2]); Alert ($ ("div.select-simulation").        Myselect (' GetText ') [0]); Alert ($ ("div.select-simulation").        Myselect (' GetText ') [1]); Alert ($ ("div.select-simulation").    Myselect (' GetText ') [2]); });

CSS

. select-simulation {position:relative; height:25px; width:177px; z-index:1; display:inline-block; *display:block; * Zoom:1; *display:inline; font-size:12px; color:666; Outline:none;vertical-align:middle; }.select-simulation. select-s-val {border:1px solid #d0d2d9; *zoom:1; position:relative; z-index:5; top:0px; left:0 px *zoom:1; }.select-simulation. Select-s-val.focuss {border-color: #0094ff;}. Select-simulation. select-s-val:hover {border-color: #0094ff;}. Select-simulation. select-s-val:after {content: "clear"; height:0px; display:block; overflow:0px; visibility:hidden; Clear:both;  }.select-simulation. select-s-val Text-box {display:inline-block; width:154px; border:none; height:25px; background: #fff; Filter:alpha (opacity=0); opacity:0; Position:absolute; left:0px; top:0px; Z-index:1; }.select-simulation. select-s-val input {width:144px; float:left; outline:none; border:0px; height:25px; line-height : 20px;padding:0px; padding-left:5px;}.select-simulation. Select-s-val a {width:25px; height:25px; float:left; background: #fff; border-left:1px solid #e2 e2e2; Cursor:default; }.select-simulation. Select-s-val a I {display:block; width:0px; height:0px; border:5px dashed transparent; border-to p:5px solid #888; Overflow:hidden; Float:left; margin:10px 0px 0px 8px; _display:inline;        }/*.select-simulation. select-s-val a:hover {background: #888;} . select-simulation. select-s-val a:hover I {border-top-color: #ddd;} */.select-simulation. select-s-a {position:absolute; top:26px; left:0px; width:175px; border:1px solid #e2e2e2; Heig ht:175px; Overflow:auto; Display:none; Z-index:3;background: #fff; }.select-simulation. select-s-a a {display:block; height:20px; text-align:left; text-indent:5px; line-height:20px; o Verflow:hidden; Cursor:default; }.select-simulation. select-s-a a:hover {background: #2793fb; color: #fff;}

  

  

Html

<span> area:</span>            <span> province: </span><div class= "Select-simulation" ></div>            <span> City: </span><div class= "select-simulation" ></div>            <span> District/County: </span ><div class= "Select-simulation" ></div>

  

JS City Three-level linkage Ajax edition

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.