FredCK.FCKeditorV2和vs2005中RequiredFieldValidator配合使用的問題
1
protected void Page_Load(object sender, EventArgs e)
2
{
3
this.form1.Attributes.Add ("onsubmit", "return CustomValidate()");
4
}
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官方的、原話這樣說:
protected void Page_Load(object sender, EventArgs e)2
{3
this.form1.Attributes.Add ("onsubmit", "return CustomValidate()");4
}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
2
<script language="javascript" type="text/javascript">
3
var oEditer;
4
function CustomValidate()
5
{
6
var value = oEditer.GetXHTML(true);
7
if(value=='')
8
{
9
var obj = document.getElementById('errorDiv');
10
obj.innerHTML="<font color='red'>必填!</font>";
11
return false;
12
}
13
return true;
14
}
15
function FCKeditor_OnComplete( editorInstance )
16
{
17
oEditer = editorInstance;
18
}
19
</script>
20
后臺, 
2
<script language="javascript" type="text/javascript">3
var oEditer;4
function CustomValidate()5
{6
var value = oEditer.GetXHTML(true);7
if(value=='')8
{9
var obj = document.getElementById('errorDiv');10
obj.innerHTML="<font color='red'>必填!</font>";11
return false; 12
}13
return true;14
}15
function FCKeditor_OnComplete( editorInstance )16
{ 17
oEditer = editorInstance;18
}19
</script>20

FredCK.FCKeditorV2稍稍作了改動,render事件最后一行加上writer.Write("<div id='errorDiv'></div>");
運行效果還不錯。呵呵,比較簡單,另外有一個比較好的工具,文本比較,經常碰到這樣的情形,說兩個基本沒有更改的不同版本的同一頁面,怎么運行效果不一樣的,頁面又太大。一行一行查源碼,煩死人。這樣近似的文件,我們可以象vss里面比較功能一樣,找出兩個文件不同的地方,就好說了。
工具如下:/Files/jillzhang/TextDiff.rar
另外,我參考的一些網址:
http://wiki.fckeditor.net/Troubleshooting#head-9b3ef5962fb1f578c84005f3bff3ff725d3f84c4
http://fckeditor.wikiwikiweb.de/Developer%27s_Guide/Javascript_API
作者:jillzhang
出處:http://jillzhang.cnblogs.com/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
出處:http://jillzhang.cnblogs.com/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。


浙公網安備 33010602011771號