asp.net控件RequiredFieldValidator验证FCKeditor提交两次才能成功的解决方法

    技术2022-05-11  28

    FCKeditor是一款功能强大的开源在线文本编辑器,支持ASP、ASP.NET、ColdFusion、PHP和jsp。     最近在asp.Net应用FCKeditor,发现用RequiredFieldValidator控件对fckeditor编辑器输入框内容进行验证的时候,即使内容不为空,也需要点击提交两次才能完成,查找网上资料,发现是FCKeditor本身机制的问题。

        当RequiredFieldValidator的EnableClientScript属性被设置成true时,FCKEditor不能很好的支持RequiredFieldValidator,为了解除这个限制,你必须把这个属性设置成为false,如果你希望使用客户端验证,你必须使用Custom Validator制作一个非空验证来替换RequiredFieldValidator,在其中使用FCKeditor JavaScript API即可。

    详细解决方法:首先添加一段Javascript脚本来调用FCKEditor一些属性和方法,然后将RequiredFieldValidator验证改为CustomValidator控件验证,设置ClientValidationFunction="js函数名",注意设置ValidateEmptyText="True",否则不起作用! 大家可以在www.deepteach.com下载“深度学习(asp.Net)留言板”来对照FCKeditor提交两次才能成功的解决方法。 示例代码如下: <FCKeditorV2:FCKeditor ID="FCKeditor_guestContent" runat="server" ToolbarSet="Basic"  ></FCKeditorV2:FCKeditor><asp:CustomValidator ID="rfv_guestContent" runat="server" ErrorMessage= "留言为空"   ClientValidationFunction ="FCKeditorValidate"  ValidateEmptyText ="true" ></asp:CustomValidator><script language="javascript" type="text/javascript">     var oEditer;     //函数名与ClientValidationFunction值对应    function FCKeditorValidate(source, arguments)     {         var value = oEditer.GetXHTML(true);         if(value=="")         {            arguments.IsValid = false;              }         else          {             arguments.IsValid = true;          }     }    function FCKeditor_OnComplete( editorInstance )    {          oEditer = editorInstance;    }  </script>  这样,一次就可以直接提交了,不会出现提交两次的bug了。


    最新回复(0)