zoukankan      html  css  js  c++  java
  • 联动下拉框 jquery 插件(一)

    CascadingDropDown是jquery联动下拉框插件,可以用于asp.net,或者mvc3,采用ajax,返回json数据。

    <asp:DropDownList ID="ddlRegion" runat="server"></asp:DropDownList>
    
    <asp:DropDownList ID="ddlProvince" runat="server"></asp:DropDownList>
    
    <asp:DropDownList ID="ddlCity" runat="server"></asp:DropDownList>

    <script src="Scripts/jquery-1.6.1.min.js" type="text/javascript"></script>
    
    <script src="Scripts/jquery.cascadingDropDown.js" type="text/javascript"></script>


    当第一个列表中选择后,第二个列表自动填充

    $("#ddlProvince").CascadingDropDown("#ddlRegion", 'Controls/AreaHandler.ashx', { textfield: 'ProvinceName', valuefiled: 'ProvinceId' });
    
    $("#ddlCity").CascadingDropDown("#ddlProvince", 'Controls/AreaHandler.ashx', { textfield: 'CityName', valuefiled: 'CityId' });


    JSON:
    {"count":"7","error":"","success":"true","data":[
    {"ProvinceId":"14","ProvinceName":"江西省"},
    {"ProvinceId"
    :"16","ProvinceName":"河南省"},
    {"ProvinceId":"17","ProvinceName":"湖北省"},
    {"ProvinceId"
    :"21","ProvinceName":"广西壮族自治区"}]
    }


    详细:

    $(targetID).CascadingDropDown(sourceID, actionPath, settings)

    • targetID
      即将自动填充选择列表的ID.
    • sourceID
      change事件的下拉框ID(即父控件ID).
    • actionPath
      post数据的URL

    参数:

    • promptText
      下拉框第一个选项
      默认: -- 请选择 --
    • loadingText
      当加载时.
      默认:加载中..
    • errorText
      出错时
      默认: 加载失败.
    • postData
      post完成后的数据
      如:
      postData: function () {
          return { prefix: $('#txtPrefix').val(), customerID: $('#customerID').val() };
      }
      将会 prefix=foo&customerID=bar 方式传参.
      默认: 以序列化 serialize 一定要有控件的name属性 不然无法序列化
    • onLoading (event)
      正在加载……
    • onLoaded (event)
      加载完成后……

      textfield:对应数据库 值 字段
      valuefiled:对应数据库 id 字段
      默认:
      textfield: 'text',
      
      valuefiled: 'value'

    后台处理数据:


    if (context.Request.Params["ddlProvince"] != null)
    
    {
    
     sql = String.Format("SELECT  CityId, CityName FROM T_City where ProvinceId='{0}'", context.Request.Params["ddlProvince"]);
    
    }

    if (context.Request.Params["ddlRegion"] != null)
    
    sql = String.Format("SELECT ProvinceId,ProvinceName FROM T_Province where RegionId='{0}'", context.Request.Params["ddlRegion"]);

    jquery.cascadingDropDown.js

    (function ($) {
     $.fn.CascadingDropDown = function (source, actionPath, settings) {
         if (typeof source === 'undefined') {throw "?????"; }
         if (typeof actionPath == 'undefined') { throw "?????"; }
         var optionTag = '<option></option>';
         var config = $.extend({}, $.fn.CascadingDropDown.defaults, settings);
         return this.each(function () {
         var $this = $(this);
         (function () {
             var methods = {
                 clearItems: function () {
                     $this.empty();
                     if (!$this.attr("disabled")) {
                         $this.attr("disabled", "disabled");
                     }
                 },
                 reset: function () {
                     methods.clearItems();
                     $this.append($(optionTag).attr("value", "").text(config.promptText));
                     $this.trigger('change');
                 },
                 initialize: function () {
                     if ($this.children().size() == 0) {
                         methods.reset();
                     }
                 },
                 showLoading: function () {
                     methods.clearItems();
                     $this.append($(optionTag).attr("value", "").text(config.loadingText));
                 },
                 loaded: function () {
                     $this.removeAttr("disabled");
                     $this.trigger('change');
                 },
                 showError: function () {
                     methods.clearItems();
                     $this.append($(optionTag).attr("value", "").text(config.errorText));
                 },
                 post: function () {
                     methods.showLoading();
                     $.isFunction(config.onLoading) && config.onLoading.call($this);
                     $.ajax({
                         url: actionPath,
                         type: 'POST',
                         dataType: 'json',
                         data: ((typeof config.postData == "function") ? config.postData() : config.postData) || $(source).serialize(),
                         success: function (data) {
                             methods.reset();
                             $.each(data.data, function (i, k) {
                                 $this.append($(optionTag).attr("value", eval("k." + config.valuefiled)).text(eval("k." + config.textfield)));
                             });
                             methods.loaded();
                             $.isFunction(config.onLoaded) && config.onLoaded.call($this);
                         },
                         error: function () {
                             methods.showError();
                         }
                     });
                 }
             };
     
            $(source).change(function () {
                 var parentSelect = $(source);
                 if (parentSelect.val() != '') {
                     methods.post();
                 }
                 else {
                     methods.reset();
                 }
             });
             methods.initialize();
         })();
         });
     }
     
    $.fn.CascadingDropDown.defaults = {
         promptText: '-- ??? --',
         loadingText: '??????',
         errorText: '????',
         postData: null,
         onLoading: null,
         onLoaded: null,
         textfield: 'text',
         valuefiled: 'value'
     }
     })(jQuery);
  • 相关阅读:
    建站手册-网站主机:电子商务主机
    建站手册-网站主机:网站主机的类型
    建站手册-网站主机:网站主机的数据库技术
    建站手册-网站主机:网站主机的服务器技术
    建站手册-网站主机:主机的电子邮件服务
    建站手册-网站主机:主机性能
    建站手册-网站主机:注册域名
    建站手册-网站主机:网站主机服务商
    建站手册-网站主机:网站主机介绍
    杂项:JFB-权限设置
  • 原文地址:https://www.cnblogs.com/zengxiangzhan/p/2072684.html
Copyright © 2011-2022 走看看