經過查找網上的資料,發現好像是它本身的一個問題,原文如下:
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. 譯文如下(翻譯的不好,大家能看懂就好):
問:為什麼在使用ASP.NET的RequiredFieldValidator時,我需要提交兩次
答:當RequiredFieldValidator的EnableClientScript屬性被設置成true時,FCKEditor不能很好的支持RequiredFieldValidator,為了解除這個限制,你必須把這個屬性設置成為false 如果你希望使用客戶端驗證,你必須使用Custom Validator制作一個非空驗證來替換RequiredFieldValidator,在其中使用FCKeditor JavaScript API即可。
看了這篇文章,我就去找FCKeditor JavaScript API的文檔,發現它為客戶端JavaScript的調用提供了一些屬性和方法,於是乎,就按上述的回答寫了一段JavaScript腳本來完成了驗證。
詳細解決方法:首先添加Javascript腳本:
復制代碼 代碼如下:
script language="javascript" type="text/javascript">
var oEditer;
function CustomValidate(source, arguments)
{
var value = oEditer.GetXHTML(true);
if(value=="")
{
arguments.IsValid = false;
}
else
{
arguments.IsValid = true;
}
}
function FCKeditor_OnComplete( editorInstance )
{
oEditer = editorInstance;
}
</script>
`然後添加CustomValidator,設置ClientValidationFunction="CustomValidate",注意千萬別忘了ValidateEmptyText="True",否則不起作用!
這樣,再試試,OK,一次就可以直接提交了,不會出現提交兩次的bug了