dwz中combox的value问题

dwz手册上说combox设置value=xxx,代表选择项。实际应用中发现总是会显示第一项,打开dwz.combox.js代码:

 

 1  var  $ this   =  $( this ).removeClass( " combox " );
 2                   var  name  =  $ this .attr( " name " );
 3                   var  value =  $ this .attr( " value " );
 4                   var  label  =  $( " option[value= "   +  value  +   " ] " ,$ this ).text();
 5                   var  ref  =  $ this .attr( " ref " );
 6                   var  param  =  $ this .attr( " param " );
 7                   var  cid  =  Math.round(Math.random() * 10000000 );
 8                   var  select  =   ' <div class="combox"><div id=" ' +  cid  + ' " class="select" '   +  (ref ? '  rel=" '   +  ref  +   ' " '  :  '' +   '  name=" '   +  name  +   ' " '   +  (param  ?   '  param=" '   +  param + ' " '  :  '' +   ' > ' ;
 9                  select  +=   ' <a href="javascript:" class=" ' + $ this .attr( " class " ) + ' " name=" '   +  name  + ' " value=" '   +  value  +   ' " change=" '   +  ($ this .attr( " change " ) ? $ this .attr( " change " ): "" ) +   ' "> '   +  label  + ' </a></div></div> ' ;
10                   var  options  =   ' <ul class="comboxop" id="op ' +  cid  + ' "> ' ;
11                  $( " option " , $ this ).each( function (){
12                       var  option  =  $( this );
13                      options  += " <li><a class=\" " +  (value == option[ 0 ].value ? " selected " : "" + " \" href=\"#\" value=\" "   +  option[ 0 ].value  +   " \"> "   +  option[ 0 ].text  +   " </a></li> " ;
14                  });

上面第3行用$this.attr("value");本意是想取出select里value属性值,但是对于select,$this.attr("value")取到的却是当前选择的option值,对于刚刚加载的select标签来说,这个值永远是第一个option的值,这也就导致了第13行中永远是第一个option加上了selected属性。

解决这个问题的办法也很简单,就是换一个属性。这里我用ShowValue属性示例,select这样写<select class="combox" ShowValue="abc" />,js中将$this.attr("value");改为$this.attr("showvalue")?$this.attr("showvalue"):$this.val();,这样就解决了combox的问题。

你可能感兴趣的:(combox)