DWR中Util.js常用方法收集

DWRUtil.js常用方法收集

1、  取元素操作符: $() / byId()

等同于document.getElementById() ,注意,不能代替documents.getElementsByName()[0]

除了IE6可以。

例如:

$('in') = document.getElementById('in')

如果你这样写:

<input type="text" name=”test3” value="test3 ok!"/>

alert ($(“test3”));

则会抛出一个null的异常!

2、  取值: getValue()  /  getValues()  /  getText()

getValue可以取出form中各元素的值,其中参数是个元素的id值(checkboxradio除外)

其中:

text buttonfilehiddenpassword(明文):取得直接是value

select:如果是多选的话,会全部返回,并以逗号分隔

textareadivpspanhrefoption(不是取的value),h1等:取的是起始结束标签之间的值

checkboxradio(使用的参数是id):选中返回true,不选返回false

checkboxradio(使用的参数是name):返回选中的值,多值以逗号分隔

注意:checkboxradio同时又idname时,优先使用的是id

 

getText()getVale()基本一样,只有个别元素取的数据不同,select元素中使用getText取得是selecttext属性而不是value

 

getValues()getValue()类似,都是取元素的值,但使用的方法上却大不相同。

getValues()接收的参数是id-value的键值对或者form元素

例如:          

var user={userName:null,userPassword:null};

DWRUtil.getValues(user);

           或者

var user = DWRUtil.getValues({userName:null,userPassword:null});

值不一定是null,但我尝试了一下,即使定义了初始值,貌似也没有作用,提交的时候仍然会使用表单元素的值。

它将对应的元素id和值放入user中,user是一个类似map的结构,在dwr.xml可以将其定义成bean类型(比较简单,用的比较多),例如

<convert converter="bean" match="logic.UserBean"/>

然后,在这个bean中定义userName,和userPassword两个字段,在使用调用后台方法时就可以使用对应的get方法了。

另一种使用方法是

var user = DWRUtil.getValues(“myform”);

这边的myform是表单的id名,返回的user是表单中所有元素(好像image什么的没用)的id-value对,下面用法就和上边那种一样了。

 

3、  赋值 setValue() / setValues()

Setget使用的方法比较类似。例如:

DWRUtil.setValue("x","<H1>test ok</H1>");

其中x是表单元素id,后面是要赋的值。

官方文档上说明了一个参数:

DWRUtil.setValue("x","<H1>test ok</H1>",{ escapeHtml:false });

只带了赋的值带有html标签,如果没有加入{ escapeHtml:false }这个参数,则认为赋予的值中间的标签只是字符串,不当作html看待。

SetValue() 大致上的使用方法可以参照getvalue(),注意的是,如果是用select(多选的情况),checkboxradio,想要赋多值的情况,使用的方法是:

DWRUtil.setValue("test2",["1","2"]);

其中test2是表单元素名,12分别是其中的两个选项的值,radio赋多个值,会选择最后一个。例如:

setValues()可以一次性赋多个值,使用JavaScript对象作为参数,例如:

DWRUtil.setValues({userName:"test1",userPassword:"test2"});

 

4、  select的操作 adoptions() / removeAllOtions()

addoptions()是指给selectli增加下拉框的元素。有几种方式:

selectli通用:DWRUtil.addOptions(id,array);直接增加多个元素,name-value值相等,例如:

DWRUtil.addOptions("ultest",["test1","test2"]);

selectli通用:DWRUtil.addOptions(id,array,name);对于select来说,name-value值相等,例如:

DWRUtil.addOptions("seltest",[{name1:"test1",name2:"test2"}],"name1");

select单独:DWRUtil.addOptions(id,array,value,name);这种方式可以指定namevalue的值:例如

DWRUtil.addOptions("seltest",[{name1:"test1",name2:"test2"}],"name1","name2");

li单独:可以定义显示的格式,首先定义一个格式函数:

function formatter(entry) { return "data=" + entry; }

然后使用DWRUtil.addOptions(id,array,format)格式,注意后面可以加入{ escapeHtml:false }转义html字符,例如:

DWRUtil.addOptions("ultest",["test1","test2"],formatter);

Select单独:DWRUtil.addOptions(id,map,[reverse]),其中数据存储为map模式,这种模式可以方便的调用后台的数据。其中reverse指的是name-value对反转,默认为false,即mapkeyoptionvaluemap valueoptiontext

例如:

JS代码:

         function click_addoption(){

                    adduserAction.addoption(function(data){

                             DWRUtil.addOptions("seltest",data);

                    });

             }

Java代码:

public Map<String,String> addoption(){

           Map<String,String> map = new Hashtable<String,String>();

           map.put("test1", "1");

           map.put("test2", "2");

           map.put("test3", "3");

           return map;

}

 

removeAllOtions()没有什么好讲的,直接清除所有的option元素。例如:

DWRUtil.removeAllOptions("seltest");

 

5、  onReturn()

官方文档的解释是为了避免不同触发事件之间的差异性,引入了onReturn函数。

这是官方的例子:

<input type="text"

    οnkeypress="DWRUtil.onReturn(event, submitFunction)"/>

<input type="button" οnclick="submitFunction()"/>

这里在text中按键将会得到点击按钮同样的效果。

其实官方没讲清楚,看下源代码:

/**

 * Enables you to react to return being pressed in an input

 * @see http://getahead.org/dwr/browser/util/selectrange

 */

dwr.util.onReturn = function(event, action) {

  if (!event) event = window.event;

  if (event && event.keyCode && event.keyCode == 13) action();

};

就是说加了onReturn后,如果在input元素中按回车(13)的话,就会触发后面的函数,而其他的不会,节省了重复代码的编写量。这个在提交的情况用的多些。

 

6、  selectRange()

选中input域中的字串,第一个字符是0,选中的范围为(start) – (end-1)

例如:

    <input id="range" value="12345678"/>

    DWRUtil.selectRange("range",2,5)

345会被选中。

7、  addRows() / removeAllRows()

对表格的操作函数。

addRows的函数格式为DWRUtil.addRows(id, array, cellfuncs, [options]);

其中id指的是域的id号,array指的是数据数组,cellfuncs值得是每一列的生产函数,options可以定义行、列的生成样式以及html字符过滤。

例如下面的例子:

        function addrow(){

            var data = ["1","2","3","4"];

            var count = 1;

                    DWRUtil.addRows("tabletest",data,[function(data){return count++} , function(data){return data}] , {

                             rowCreator:function(){  // 自定义tr样式

                                       var row = document.createElement("tr");

                                       //row.style.XXX = XXX

                                       return row;

                             },

                             cellCreator:function(){  // 自定义td样式

                                       var cell = document.createElement("td");

                                       cell.className = "tab_td2";

                                       //cell.style.XXX = XXX

                                       return cell;

                             }

                    });

        }

         注意的是,array数组可以使普通的字符串数组,也可以是map数组等等。

removeAllRows()就比较简单了,直接删除所有的行。参数是table id号。

还要注意一点,官方建议使用tbodyid号而不是直接使用tableid号。

 

8、  toDescriptiveString 

官方的debug函数,格式很简单:DWRUtil. toDescriptiveString (idlevel)

Id指的是元素id,变量id等等,level指输出的信息的多少,从03依次增多。

例如:

alert(DWRUtil. toDescriptiveString(ultest,1));

 

9、  useLoadingMessage

提交时、载入时会在右上角显示“载入中”等字样,完全仿照Gmail中的载入。使用方法例如:

DWRUtil.useLoadingMessage("请稍等");

据官方文档说,useLoadingMessage在使用时可能有限制,不过测试过ie6firefoxchromeopera后还是比较正常的。

简单的改造后官方给出了载入图片的函数:

function useLoadingImage(imageSrc) {

  var loadingImage;

  if (imageSrc) loadingImage = imageSrc;

  else loadingImage = "ajax-loader.gif";

  dwr.engine.setPreHook(function() {

    var disabledImageZone = $('disabledImageZone');

    if (!disabledImageZone) {

      disabledImageZone = document.createElement('div');

      disabledImageZone.setAttribute('id', 'disabledImageZone');

      disabledImageZone.style.position = "absolute";

      disabledImageZone.style.zIndex = "1000";

      disabledImageZone.style.left = "0px";

      disabledImageZone.style.top = "0px";

      disabledImageZone.style.width = "100%";

      disabledImageZone.style.height = "100%";

      var imageZone = document.createElement('img');

      imageZone.setAttribute('id','imageZone');

      imageZone.setAttribute('src',imageSrc);

      imageZone.style.position = "absolute";

      imageZone.style.top = "0px";

      imageZone.style.right = "0px";

      disabledImageZone.appendChild(imageZone);

      document.body.appendChild(disabledImageZone);

    }

    else {

      $('imageZone').src = imageSrc;

      disabledImageZone.style.visibility = 'visible';

    }

  });

  dwr.engine.setPostHook(function() {

    $('disabledImageZone').style.visibility = 'hidden';

  });

}

不过我测试的版本dwr2中还没有加入。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值