博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FredCK.FCKeditorV2和vs2005中RequiredFieldValidator配合使用的问题
阅读量:5167 次
发布时间:2019-06-13

本文共 2004 字,大约阅读时间需要 6 分钟。

1
None.gif
protected
 
void
 Page_Load(
object
 sender, EventArgs e)
2
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif
{
3InBlock.gif        this.form1.Attributes.Add  ("onsubmit""return CustomValidate()");
4ExpandedBlockEnd.gif}
FredCK.FCKeditorV2是一款相当好的开源html在线编辑器,我们在项目中用到了它,但是发现验证它是否有输入值的RequiredFieldValidator控件却每次要点击两次才能postback,比我我们原来是空的editor,打开页面之后,输入"aaaaaaaaa",点击RequiredFiledValidator,验证控件竟然认为它没有输入值。再点一下才可以完成postback,分析了一下,主要问题发生在FredCK.FCKeditorV2使用了iframe和input hidden两个控件作为客户端,这两个控件的value不能保持同步。原来以为二者根本没有添加同步功能,只是每次象动态创建的Control一样,LoadViewState加载进去的是上一次的value,然后在render方法里面在写入input hidden,但是奇怪的问题出现了,我给button加了一个客户端onclick事件,竟然发现是在验证的客户端处理中,iframe和input来个同步,郁闷。二者都不好改亚。FredCK.FCKeditorV2虽然开源,但问题又不是在这里。好不容易,终于google出来一条有建议的帖子,还是FredCK.FCKeditorV2官方的、原话这样说:

With ASP.Net, I need to submit twice when using the RequiredFieldValidator in a FCKeditor instance

FCKeditor will not work properly with the Required Field Validator when the "EnableClientScript" property of the validator is set to "true" (default). Due to a limitation in the default validation system, you must set it to "false".

If you want to do client side validation, you must use a Custom Validator instead and provide the appropriate validation function, using the FCKeditor JavaScript API.

终于明白了,呵呵,原来人家把这个没有当成bug处理。怪不得没有现成方法呢,按照他的建议,用FCKeditor JavaScript API.实现了这个功能。其实非常简单,在页面里面添加下面code
 1
None.gif
 2
None.gif    
<
script language
=
"
javascript
"
  type
=
"
text/javascript
"
>
 3
None.gif    var oEditer;
 4
None.gif    function CustomValidate()
 5
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif
{
 6InBlock.gif        var value = oEditer.GetXHTML(true);
 7InBlock.gif        if(value=='')
 8ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 9InBlock.gif           var obj = document.getElementById('errorDiv');
10InBlock.gif           obj.innerHTML="<font color='red'>必填!</font>";
11InBlock.gif           return false;     
12ExpandedSubBlockEnd.gif        }
13InBlock.gif        return true;
14ExpandedBlockEnd.gif    }
15
None.gif    function FCKeditor_OnComplete( editorInstance )
16
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif
{  
17InBlock.gif        oEditer = editorInstance;
18ExpandedBlockEnd.gif    }
19
None.gif    
</
script
>
20
None.gif
后台,
FredCK.FCKeditorV2稍稍作了改动,render事件最后一行加上writer.Write("<div id='errorDiv'></div>");
运行效果还不错。呵呵,比较简单,另外有一个比较好的工具,文本比较,经常碰到这样的情形,说两个基本没有更改的不同版本的同一页面,怎么运行效果不一样的,页面又太大。一行一行查源码,烦死人。这样近似的文件,我们可以象vss里面比较功能一样,找出两个文件不同的地方,就好说了。
工具如下:
另外,我参考的一些网址:

转载于:https://www.cnblogs.com/jillzhang/archive/2006/09/30/518838.html

你可能感兴趣的文章
Struts2返回JSON数据的具体应用范例
查看>>
js深度克隆对象、数组
查看>>
socket阻塞与非阻塞,同步与异步
查看>>
团队工作第二天
查看>>
System类
查看>>
tableView
查看>>
Happy Great BG-卡精度
查看>>
Xamarin Visual Studio不识别JDK路径
查看>>
菜鸟“抄程序”之道
查看>>
Ubuntu下关闭防火墙
查看>>
TCP/IP 邮件的原理
查看>>
原型设计工具
查看>>
windows下的C++ socket服务器(4)
查看>>
css3 2d转换3d转换以及动画的知识点汇总
查看>>
【Java】使用Eclipse进行远程调试,Linux下开启远程调试
查看>>
对Vue为什么不支持IE8的解释之一
查看>>
计算机改名导致数据库链接的诡异问题
查看>>
Java8内存模型—永久代(PermGen)和元空间(Metaspace)(转)
查看>>
ObjectiveC基础教程(第2版)
查看>>
centos 引导盘
查看>>