崔文远 Troy Cui 老崔先生的上海生活、技术博客

在Flowportal.Net 3.5t BPM中批量设定输入框、下拉选项的字体颜色

想了半天也想不好该给这篇文章起个什么标题,其实这篇文章的核心是说当DropDownList使用了disabled属性后,字体变为灰色,怎么办都没法修改字体颜色,除非不用DropDownList或者不要Disabled。研究这个问题的缘由是美国的一个BPM关键用户提出来当访问forms/read.aspx?tid=xxx的页面时,很多输入框和选择项都是灰色的,她说很难看清,要求字体颜色深一点。对于input和textarea,在BPM里有一个DisableBehavior属性如下图,默认是Disable,修改为Readonly就能解决。而对于DropDownList和CheckBox等Select类的选项,就没有办法解决了。



既然如此,那就按照我的思路,只要访问的页面地址包括read.aspx,那就把所有select的控件的disabled属性去掉。首先想起来的就是用Jquery,把核心代码写到 $(document).ready(function(){}中,可悲的是,调整input控件的代码执行了,但是去掉select控件属性的代码怎么都不执行。

<br/>$(document).ready(function(){<br/><br/>var pathname = window.location.pathname;<br/>if (pathname.toLowerCase().indexOf("read.aspx") >= 0 ) {<br/>$("select").removeAttr("disabled");<br/>$("select").removeAttr("readonly");<br/>$("input").removeAttr("disabled");<br/>// method 1<br/>//$("input").attr("DisableBehavior","ReadOnly");<br/>// method 2<br/>$("input").css({color:"#000"});<br/>$("textarea").css({color:"#000"});<br/>}<br/><br/>});<br/>



经过询问官方的技术大牛马丁,他说BPM本身的js是在document的Ready状态执行,可能跟Jquery的document的Ready会有先后执行的顺序问题。给出建议使用Button来调试那段去掉select控件属性的代码,如果成功的话,就放到body.onload中调用。

于是拖了一个xButton控件到页面任意地方,然后用如下代码调试,一切顺利。

<br/>$("#xbtnDarken").click(function(){<br/><br/>$("select").removeAttr("disabled");<br/>$("select").removeAttr("readonly");<br/><br/>});<br/>



于是按照马丁所给思路,我把代码写到window.onload中,如下代码,解决问题。

<br/>//window.onload = function(){<br/>// 可以使用这种方法,建议用下面的方法,当然了,还可以使用body.onload的原生和Jquery两种调用<br/>//};<br/>$(window).load(function (){<br/><br/>var pathname = window.location.pathname;<br/>if (pathname.toLowerCase().indexOf("read.aspx") >= 0 ) {<br/>$("select").removeAttr("disabled");<br/>$("select").removeAttr("readonly");<br/>$("input").removeAttr("disabled");<br/>// method 1<br/>//$("input").attr("DisableBehavior","ReadOnly");<br/>// method 2<br/>$("input").css({color:"#000"});<br/>$("textarea").css({color:"#000"});<br/>}<br/><br/>});<br/>



虽然问题解决了,但是由此引发的思考很多,为了保险起见,我同时保留了Ready的函数。详细原因强烈建议阅读以下几篇文章:

1、[URL=http://www.cnblogs.com/mackxu/archive/2012/12/02/2798207.html]jQuery.ready和onload区别[/URL]
2、[URL=http://www.songlecn.com/2009/03/423/]window.onload 和 ‘jquery.onload’的执行顺序问题[/URL]
3、[URL=http://www.google.com.hk/search?hl=zh-CN&newwindow=1&safe=strict&site=&source=hp&q=HTML+SELECT+Disable+Font+Color&btnK=Google+%E6%90%9C%E7%B4%A2]HTML SELECT Disable Font Color[/URL]
留言列表
来宾
来宾 DisableCssClass设置不就行了
发表留言
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。