日期:2014-05-16  浏览次数:20503 次

调用颜色对话框时为什么点击"取消"按钮会是这个效果??
我想达到这样的效果,某个输入框中有某种颜色对应的十六进制数值;
在该输入框中单击就弹出颜色对话框,选择颜色点确定后,对应的十六进制颜色就显示在该输入框中
现在问题是,我点颜色对话框中的“取消”按钮时,黑色对应的十六进制颜色也显示在该输入框中,而且一直是黑色,也许是弹出时黑色是默认颜色的关系吧
请帮我改改~~谢谢!!!
代码如下:(我用的是asp.net,大家只要看JS就可以了吧....)
aspx:
<head   runat= "server ">
        <title> 无标题页 </title>
</head>
<body>
<script>
var   sInitColor   =   null;
function   callColorDlg(btn){
if   (sInitColor   ==   null)  
var   sColor   =   dlgHelper.ChooseColorDlg();
else
var   sColor   =   dlgHelper.ChooseColorDlg(sInitColor);
sColor   =   sColor.toString(16);
if   (sColor.length   <   6)   {
    var   sTempString   =   "000000 ".substring(0,6-sColor.length);
    sColor   =   sTempString.concat(sColor);
}
sColor   =   "# "   +   sColor;
//alert(sColor);
btn.value=sColor;         //   值
btn.style.color=sColor;     //   前景色  
btn.style.backgroundColor=sColor;     //   背景色
}
</script>

<OBJECT   id= "dlgHelper "   CLASSID= "clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b "   width= "0px "   height= "0px "> </OBJECT>
------------
aspx.cs中:
TextBox1.Attributes.Add( "onclick ",   "callColorDlg(TextBox1) ");     //   增加单击事件

------解决方案--------------------
黑色是默认值,不管你选择黑色或者点取消,sColor返回的值都是0
------解决方案--------------------
精辟.0就是默认的黑色对吧 即000000
------解决方案--------------------
up
------解决方案--------------------
if (sColor.length < 6) {
var sTempString = "000000 ".substring(0,6-sColor.length);
sColor = sTempString.concat(sColor);
}

这个if删掉就可以了