1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

Formset表单设置函数库

本帖由 周董2006-09-06 发布。版面名称:后端开发

  1. 周董

    周董 New Member

    注册:
    2006-08-30
    帖子:
    1,798
    赞:
    20
    Formset表单设置函数库

    一、从基本说起
    B/S开发,最基础的人机交互是什么?数据来自哪里?(产生的和输入的[废话...此处省略N万字....])。是表单。常规的软件都必不可少的过程是 用户输入--》处理--》存储--》读取修改。数据存在数据库里木用,要动起来,就要交互。于是..........

    二、过程

    1.用户输入
    通过以下几种表单元素,展示给用户,通过输入、点击、拖曳等形式操作,然后获取用户的动作。
    文本框、多行文本域、下拉菜单、单选按钮、复选按钮、隐藏域。

    2.处理存储

    3.读取修改
    把现有的数据读出来,再以表单形式展示。恰恰是这一步,让程序员头疼,明明和添加过程相似,还要机械性的写一遍,简直是浪费人力。根据不同的表单元素,还要损耗脑细胞啊。

    文本框:以 value = 形式设值
    多行文本:在textarea之间输出值
    下拉菜单:这个怎么办?获取值,用编程判断选项的值,在值符合的一项,多输出一个selected,要重新输出一次菜单。
    单选按钮:这个呢?判断符合的值,输出checked。
    复选按钮:判断是否空值,然后决定是否checked。
    要调用页面元素:document.getElementById ,汗偶英文不好,总记不住这长的一串单词。。。。
    还有些元素属性的设置,元素的隐藏与显示。。。。。。

    明明是很简单的问题,非要用编程实现,有时间容许这样挥霍么?

    三、解决方法
    现在你不必要编程来解决很白痴又浪费时间的问题了,之需要引用一个js,读取值输出就可了。

    Formset.js


    CODE:[Copy to clipboard]var Radiov = 'null';
    var Rarray = 'null';
    var EType;
    //DreamEcm Formset
    //Date: Jul 13, 2006
    //Copyright: DreamSoft Co.,Ltd.
    //Mail: [email protected]
    //Author: Egmax
    /***
    Input('Element_id','value');
    ***/
    function Input(Eid, v)
    {
    $(Eid).value = v;
    }

    /***
    Select('Element_id','value');
    ***/
    function Select(Eid,v)
    {
    var _obj = $(Eid);
    for(var i=0; i<_obj.options.length; i++)
    if(_obj.options.value == v) { _obj.selectedIndex = i; break; }
    }

    /***
    Checkbox('Element_id','value');
    ***/
    function Checkbox(Eid,v)
    {
    if(v != 0) $(Eid).click();
    }

    /***
    Radio('Element_name', 'value');
    ***/
    function Radio(Ename, Evalue)
    {
    if(typeof(Radiov) == 'string') Rarray = _GetRadio();
    if(typeof(Rarray) == 'string') return false;
    for (var i=0; i<Rarray.length; i++){
    if (Rarray.name == Ename && Rarray.value == Evalue) { Rarray.click(); break; }
    }
    }

    /***
    Set(Fid, v);
    ***/
    function Set(Fid, v)
    {
    EType = $(Fid).type;
    switch(EType) {
    case 'text' : Input(Fid, v); break;
    case 'select-one' : Select(Fid, v); break;
    case 'checkbox' : Checkbox(Fid, v); break;
    case 'hidden' : Input(Fid, v); break;
    case 'radio' : Radio(Fid, v); break;
    case 'textarea' : Input(Fid, v); break;
    default : return false;
    }
    }

    /***
    $('Element_id','Element_id',..........);
    return : obj array
    ***/
    function Submit(Fname)
    {
    document.forms[Fname].submit();
    }

    /***
    Dis('Element_id','Element_id',..........);
    ***/
    function Dis(Eid)
    {
    if(arguments.length == 1) { $(Eid).disabled = true; return; }
    var i;
    for (i=0; i<arguments.length; i++)
    if(typeof(arguments) == 'string') $(arguments).disabled = true;
    }

    /***
    $('Element_id','Element_id',..........);
    return : obj array
    ***/
    function $(EId)
    {
    if(arguments.length == 1) return document.getElementById(EId);
    var i,Es = new Array();
    for (i=0; i<arguments.length; i++)
    if(typeof(arguments) == 'string') Es.push(document.getElementById(arguments));
    return Es;
    }

    /***
    _GetRadio();
    return : obj array
    ***/
    function _GetRadio()
    {
    var _input = document.getElementsByTagName('input');
    if(_input.length < 1) return 'null';
    var i,Is = new Array();
    for (i=0; i<_input.length; i++) if(_input.type=="radio") Is.push(_input);
    Radiov = Is;
    return Is;
    }
    示例:


    CODE:[Copy to clipboard]<script src='Formset.js'></script>

    Input演示:<input id='t_input' name='test'>
    <br>Input('t_input','123456');
    <br><br>

    Select演示:
    <select id='t_select' name='t_select'>
    <option value='aa'>aa001</option>
    <option value='bb'>bb002</option>
    <option value='cc'>cc003</option>
    <option value='dd'>dd004</option>
    </select>
    <br>Select('t_select','cc');
    <br><br>

    Checkbox演示:
    <input type='checkbox' id='t_box' value=0>已经阅读
    <br>Checkbox('t_box', 1);
    <br><br>

    Radio演示:
    <input type='radio' id='t_radio1' name='f_radio' value='aaa'>R1
    <input type='radio' id='t_radio2' name='f_radio' value='bbb'>R2
    <input type='radio' id='t_radio1' name='f_radio2' value='caaa'>R1
    <input type='radio' id='t_radio2' name='f_radio2' value='cbbb'>R2
    <br>Radio('f_radio', 'bbb');
    <br><br>

    Dis演示:<br>
    Dis('t_input','t_select','t_box','t_radio1');
    <br><br>
    Submit演示:<br>
    Submit('tf');

    <textarea id='t_textarea' name='f_radio'></textarea>

    <form action='0' name='tf' target='_blank'></form>

    <script>
    Set('t_input','123456'); //这个是设置input的值
    Set('t_select','cc'); //这个是设置select的值
    Set('t_box', 1); //这个是设置checkbox的值
    Set('f_radio', 'bbb'); //这个是设置radio的值
    Set('f_radio2', 'cbbb');
    Set('t_textarea', 'cbbb'); //这个是设置textarea的值
    Dis('t_input','t_select','t_box','t_radio1'); //这个是禁用某个元素,可以设置一个或多个参数
    Submit('tf'); //这个是提交name为tf的表单
    </script>
    无论是文本框还是下拉菜单,现在你只需要调用 Set(元素id,元素的值);
    如果需要获取页面的元素,只需要 $('元素id') 就可取得元素,效果同 document.getElementById ,要取得多个元素,则设置多个参数。


    四、结束
    总之搞程序,就要学会偷懒,尽量一劳永逸。。。。。