Register  |  Login

如何借助JQuery封装HTML SELECT操作?

Posted in [Asp.Net MVC], [JQuery], [杂项] By Baldwin

最近一直在开发Asp.Net MVC项目, 对DNN稍有松懈, 不过由于所有技术都有相通和借鉴之处, 故在学习MVC框架的同时也对DNN有了更深的认识, 由于MVC模式对UI和前端界面的交互有更多的掌握, 需要你更多控制界面上的HTML元素, 包括布局控制和如何呈现等等. 在此想分享一点JQuery在MVC模式下(当然你在其他项目也是可以用到的, 比如DNN或传统的Asp.Net form)如何操作HTML SELECT元素, 其中包括: 
   1) 清空SELECT所有Options项
   2) 动态加载键值对的数据
   3) 根据value或text设置选中的Option
等等

/*
 * Manipulation for HTML SELECT with jQuery
 * Created by Baldwin (http://www.dnnsun.com)
 * version: 1.0 (02/03/2009)
 * @requires jQuery v1.2 or later
*/
;(function($) {
    /* Clear all options */
    $.fn.clearSelect = function() {
        return this.each(function() {
            if (this.tagName == 'SELECT') this.options.length = 0;
        });
    } 
     
    /* Fill the options with the object array: [{'Text':'Hello','Value':'1'}]*/
    $.fn.fillSelect = function(data) {
        return this.clearSelect().each(function() {
            if (this.tagName == 'SELECT') {
                var dropdownList = this;
                if(data && data.length>0){
                    $.each(data, function(index, optionData) {
                        var option = new Option(optionData.Text, optionData.Value);
                        
                        if ($.browser.msie)
                            dropdownList.add(option);
                        else
                            dropdownList.add(option, null);
                    });
                    dropdownList.disabled = false;
                }
                else
                    dropdownList.disabled = true;
            }
        });
    }
     
    /* loading when applying Ajax fillSelect */
    $.fn.loadSelect = function(loadText) {
        var data = [{'Text':loadText,'Value':''}];
        this.fillSelect(data);
    }
     
    /* selected the target option with value */
    $.fn.selected = function(value) {
        return this.each(function() {
            if (this.tagName == 'SELECT'){
                var options = this.options;
                if(options.length>0){
                     $.each(options, function(index, optionData) {
                        // once match then exist loop
                        if ( optionData.value==value) { 
                            optionData.selected = true; 
                            return false; 
                        }                    
                     });
                }
            }
        });
    } 
    
    /* TODO:selected the target option with text */
    $.fn.selectedText = function(text) {
        return this.each(function() {
            if (this.tagName == 'SELECT'){
                var options = this.options;
                if(options.length>0){
                    $.each(options, function(index, optionData) {
                        // once match then exist loop
                        if (optionData.text==text) { 
                            optionData.selected = true; 
                            return false; 
                        }                    
                    });
                }
            }
        });
    }
    
    /* returns the selected value */
    $.fn.getSelected = function() {
        return $(this).val();
    }
    
    /* return the text of selected option */
    $.fn.getSelectedText = function() {
        return $(this).children("[@selected]").text();
    }
})(jQuery);

:) Enjoy JQuery & DNN!

Popular tags: jQuery, MVC, Ajax
Previous Entry: 如何在DNN模块级别以编程方式添加样式文件
Next Entry: Javascript版本的StringBuilder

Comments

Was it good for you, too? Join the discussion »

leave a reply

About the author
Baldwin's Status
 Contact Me
Baldwin Sun
Senior Developer for dnn solution & founder of SunBlog module...
网站主页
dnnsun
最新评论
  1. Re: "暴力"解决DNN无法登陆的问题

    你好 有个问题 我改了登录界面后能登录 但是一点注册 就跳到了HOME页 这个怎么解决

    --zl24622

  2. Re: 你的dnn站点慢了么?

    需要你把旁边的checkbox勾选上再执行 :)

    --Baldwin

  3. Re: 你的dnn站点慢了么?

    为什么,我将你的代码copy到host>sql中去执行之后,报错呢,语句是不是有问题哦?

    --claire

  4. Re: 剖析DNN架构-开篇之作

    很好

    --vling83

  5. Re: SunBlog更新:增加3D Tag Clouds插件

    在以上评论已说明, SunBlog已经是一个成熟的商业模块,如果需要授权或下载请邮件联系我们, 感谢你的关注, 我们即将推出一个demo的站点(这周之内).

    --Baldwin

  6. Re: SunBlog更新:增加3D Tag Clouds插件

    这个没地方下载的吗,要怎么才能下载到,谢谢

    --Sun key

  7. Re: SunBlog更新:增加3D Tag Clouds插件

    已经电邮您了,请注意查收

    --sunny0315

  8. Re: 如何添加DNN模块的自定义权限

    你只要设置好该节点即可, 比如:DnnSun.SunBlogNuke.Business.InterfaceController, DnnSun.Modules.SunBlogNuke 其他的请再详细看看本文,我觉得说得蛮清楚的 :)

    --Baldwin

Blog搜索
Rss Feed
feedsky
抓虾
pageflakes
newsgator
哪吒
相册库
更多照片请查看相册库
我们的服务
  • DotNetNuke 咨询
  • Web设计及其模块开发
  • 免费建站
  • 电子商务
  • 开拓市场
我们致力于开发定制的web 2.0 ,所服务的客户主要包括小中型企业,社区俱乐部及其非盈利机构组织。我们将利用开源的DNN作为我们核心的系统机制,更多相关信息...
版权声明
本站任何言论仅代表个人观点,与作者所在的公司没有任何关系,所有贴子皆以“现状”提供且没有任何担保,同时也没有授予任何权利。