有时在使用FCK的,需要对它做非空的验证。以前一直是使用 RequiredFieldValidator控件来完成的。但是会有一个小小的bug,在提交的时候第一次不能通过验证。需要提交两次才能通过。问题一:有的资料说解决办法是“禁用RequiredFieldValidator控件的客户端脚本验证功能。只在服务器端验证。”
可是这样做了不行啊,还是要提交两次。

代码如下:<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" 
            ErrorMessage="请输入信息内容!" ControlToValidate="Cont_Notice" 
            Display="None" EnableClientScript="False"></asp:RequiredFieldValidator>问题二:“客户端脚本验证”和“服务端脚本验证”分别是两种什么机制?有什么差别和联系?解决方法二:利用FCK提供的方法使用CustomValidator控件,就可以解决上述的bug。在客户端使用js做FCK的非空验证。
//Fck非空验证
var oEditer;  
function FckValidate(source, arguments)  
{
    var value = oEditer.GetXHTML(true);  
    if($.trim(value) == '')  
    {  
        arguments.IsValid = false;       
    }  
    else   
    {   
        arguments.IsValid = true;   
    }
}function FCKeditor_OnComplete(editorInstance)  
{
    oEditer = editorInstance;  
}
<asp:CustomValidator ID="CustomValidator1" runat="server" Display="Dynamic" ErrorMessage="没有填写" ClientValidationFunction="validTitle" OnServerValidate="ValidFck" ControlToValidate="fck"></asp:CustomValidator>问题三:看不懂啊。如果利用自定义验证,那么" ClientValidationFunction="validTitle"是客户端验证方法,而“ OnServerValidate="ValidFck"”是服务器验证方法。可是这两个方法的方法体在哪?又是怎样和js中的方法怎样联系起来的。
敢问各位大侠有类似的方法体吗?实例更好。小弟在此先行谢过。也可以发到小弟的邮箱里:[email protected]

解决方案 »

  1.   

    FCKeditor本身机制的问题  
    var oEditor = FCKeditorAPI.GetInstance("<%=FCKeditor1.ClientID %>") ;
    if(oEditor.GetXHTML(true).Trim().length == 0)
    {
      alert("请输入!");
      return false;
    } EditorDocument.body.innerText;
    http://dotnet.chinaitlab.com/ASPNET/799882.html 验证控件
    属于客户端验证,自定义验证控件,非常灵活,以自行设计验证逻辑。
    JS验证,属于客户端验证,灵活、适用 
     
      

  2.   


    有点看不懂呢?在后台用C#语言写可以吗?CustomValidator控件是怎么触发JS中的函数的呢?如果用JS验证,验证信息还会出现在“Summary”控件里吗?
      

  3.   

    onclientclick中客户端验证
    验证控件的EnableClientScript=true,将输出javascript脚本在客户端验证,或是客户端验证不通过,就不是提交到服务端进行验证,若是客户端通过了,才会提交到服务端验证.   
    若是验证控件的EnableClientScript = false会将在服务端进行验证,每次验证都要提交到服务端进行验证.在服务端可以用Page.IsValid来确定是否验证通过
      

  4.   

    http://xss23.javaeye.com/blog/447778
    http://www.hackline.net/a/special/wzjs/wzbc/jsp/2010/1231/7788.html
    http://www.chinaret.com/user/topic_view.aspx?id=53ec7d7c-eb5e-4814-a2a4-70884c38dc40