2017-03-14 12 views
0

カスタムレイアウトとメッセージを使用して、独自の検証フローを作成したいと考えています。 デフォルトでは、フォームビルダの検証によって、入力フィールドの横にすべてのエラーメッセージが表示されます。そして、提出後すぐにすべてのフィールドを検証します。カスタムフォームのレイアウト検証

送信後にフィールド単位で検証し、エラーメッセージがすべての入力フィールド(フォームの上部にある送信ボタンの横)に同じ場所に表示されます。

現在、私は "ASCX"タイプのカスタムフォームレイアウトを試しています。バックエンドコード ".cs"ですべての検証を行うことは可能ですか?

または、ソースモードでカスタムフォームレイアウトデザインでJavaスクリプトを挿入する必要がありますか?

これを行うには、より良い方法がありますか?

あなたが必要あなたはどこにでも検証マクロを配置することができますHTMLのレイアウトタイプで

答えて

1

オンラインフォームで[レイアウト]に移動し、フォームフィールド値、ラベル、および検証用のHTMLとマクロを使用して手動でレイアウトマークアップを入力します。そこではフォーム上のすべてのフォーム要素がどこに行くのかをボタンで指定することができます。

フォームの検証にカスタムCSを使用する場合は、挿入する前にフォームのカスタムイベントハンドラを作成する方がよいでしょう。以下のドキュメントを参照してください:

Custom event handler
Form Event handler

using CMS; 
using CMS.DataEngine; 
using CMS.OnlineForms; 
using CMS.Helpers; 

// Registers the custom module into the system 
[assembly: RegisterModule(typeof(CustomFormModule))] 

public class CustomFormModule : Module 
{ 
    // Module class constructor, the system registers the module under the name "CustomForms" 
    public CustomFormModule() 
     : base("CustomForms") 
    { 
    } 

    // Contains initialization code that is executed when the application starts 
    protected override void OnInit() 
    { 
     base.OnInit(); 

     // Assigns a handler to the Insert.After event 
     // This event occurs after the creation of every new form submission 
     BizFormItemEvents.Insert.After += Insert_After; 
    } 

    private void Insert_After(object sender, CMS.OnlineForms.BizFormItemEventArgs e) 
    { 
     if (e.Item.TypeInfo.ObjectType.ToLower().Contains("bizform.codename")) 
     { 
      //do some work or form validation 
     } 
    } 
} 
関連する問題