2017-12-08 9 views
0

私はalpacajsを使用してHTMLフォームをレンダリングしています。私の要件は、チェックボックスに基づいて特定のフィールドを表示することです。私のフォームには3つのチェックボックスがあり、チェックボックスのいずれかがチェックされていればいくつかのフィールドを表示したい。複数の依存関係にフィールドをバインドして、アルパカの条件に基づいて同じフィールドを表示する方法

conditional dependenciesのアルパカのドキュメントを調べたところ、問題の原因が見つかりませんでした。私は別の名前の同じフィールドを作成することでこれを解決できますが、これはdry principleです。

私のコードは以下のようになります。

"myCheckBox1": { 
    "type": "boolean" 
}, 
"myCheckBox2": { 
    "type": "boolean" 
}, 
"usernameField": { 
    "label": "Username *", 
    "order": 6, 
    "type": "string" 
    "disallowOnlyEmptySpaces": true, 
    "showMessages": false, 
    "disallowEmptySpaces": true, 
} 

myCheckBox1またはmyCheckBox2のいずれかがチェックされている場合、usernameFieldを表示します。条件付き依存関係を表示するようにスキーマを変更しました。

"dependencies": { 
    "usernameField": [ 
    "myCheckBox1" 
    ], 
    "usernameField": [ 
    "myCheckBox2" 
    ] 
} 

しかし、それは唯一の条件、すなわち与えられた最後検討し、それはmyCheckBox2がチェックされ、myCheckBox1を考慮しない場合にのみusernameFieldの表示されます。私も以下のコードを試しました:

"dependencies": { 
    "usernameField": [ 
    "myCheckBox1", "myCheckBox2" 
    ] 
} 

しかし、それはand conditionと評価されます。さまざまな依存関係を使用して同じフィールドを表示する方法はありますか?

答えて

2

なぜあなたは、次のように列挙型を使用してチェックボックスのグループを使用しないでください。

// schema 
"check": { 
    "title": "Select...", 
    "type": "string", 
    "enum": ["First", "Second"] 
}, 
... 
// options 
"check": { 
    "type": "checkbox" 
} 

は、その後、あなたはこのような条件付きの依存関係を使用します。

"username": { 
    "dependencies": { 
     "check": [ 
      'First', // if First is selected 
      'Second', // if Second is selected 
      'First,Second' // if both First and Second are selected 
     ] 
    } 
} 

は、ここでは、このための作業fiddleです。

これはあなたが探しているものでない場合は教えてください。

+0

回答ありがとうございます。また、チェックされているチェックボックスの下にテキストボックスを表示する方法はありますか? – cutteeth

+2

アルパカの標準では私はグループ化されたチェックボックスを使用しているので不可能だと思います。グループ化されたチェックボックスは1つのフィールドだと考えることができます。しかし、生成されたフォームをハックして、postRender関数でjqueryを使用することでこれを可能にすることができます。 – vert3x

関連する問題