はじめまして
kintoneでの開発初心者です。
ドロップダウンリストが2つあり、1つ目の選択した内容によって2つ目のリストの項目を変更したいと思っています。
例えば1つ目のリストには野菜と果物があり、野菜を選択したら2つめのリストにはトマトとピーマンが入る。
果物を選択したらりんごとみかんが入るといったようなものです。
現段階でできている部分です。
(function()
{
"use strict";
kintone.events.on('app.record.create.change.食べ物', function(event)
{
var record = event.record;
var val = record['食べ物']['value'];
switch (val)
{
case '野菜':
break;
case '果物':
break;
}
return event;
});
})();
条件分岐はできているのでリストの項目を変える方法をどなたか教えてください。
18件のコメント
yoshimura様
お世話になります。
cstapの江田と申します。
今回の場合でしたら、2つ目のドロップダウンの選択肢はあらかじめトマト,ピーマン,りんご,みかんの4つ全てを用意しておいて、野菜のときはりんごとみかんを、果物のときはトマトとピーマンを非表示にする処理をしてみてはいかがでしょうか?
江田篤史様、返信ありがとうございます。
実際の内容が1つ目のドロップダウンが地方、2つ目のドロップダウンが地方ごとの都道府県なので、項目数が多いのですが、他に最善の方法はありませんか?
また、図々しいかと思いますが、できれば参考ページかソースを教えていただけると助かります。
フィールドコード「地方」の「ドロップダウン」、フィールドコード「都道府県」の「文字列(1行)」、スペースID「space」の「スペース」の3つのフォーム部品を用意したとして、下記のコードで実装できるかと思います。
「地方」のドロップダウンの選択肢は「北海道地方」~「九州地方」を用意してください。
jQueryを用いているので読み込みを忘れずにお願いします。
スペースにドロップダウンを作成して、文字列(1行)にデータを保存するという実装方法になります。
江田篤史 様
お世話になっております。
ドロップダウンリストの項目を変更するJavascriptを色々と調べていたところ、こちらの記事にたどり着きました。
ソースを検証したところ、確かに変更することが出来たのですが、kintoneではないドロップダウンデザインでした。
ドロップダウンデザインを変更する場合は、どのように変更すればよろしいのでしょうか?
プログラミング初心者ですので、見当違いのご質問でしたら、大変申し訳ございません。
よろしくお願い致します。
きんとね様
お世話になっております。
以下のようなコードでデザインを合わせることができるかと思います。
江田篤史 様
ご返信ありがとうございます。
検証しましたところ、無事思い通りのデザインになりました。
ありがとうございます。今後ともよろしくお願い致します。
江田篤史 様
度々、申し訳ございません。
フィールドコード「都道府県コード」の「数値」を追加して、
もし、北海道が選択されたら、都道府県コードに「1」をセットし、
青森が選択されたら、都道府県コードに「2」をセットするようなIF文を入れるにはどうすればよろしいのでしょうか?
下記ソースで検証しましたが、うまくセットされませんでした。
よろしくお願い致します。
きんとね様
「地方」のドロップダウンの値が変更されたときに都道府県コードをセットするのではなく、都道府県が選択されたとき(以前私が書いたコードの34行目($(space).find(".gaia-argoui-select-label").html($(this).text());)のあと)、あるいはsubumitするときにセットしてみてはいかがでしょうか。
江田篤史 様
ご返答ありがとうございます。
($(space).find(".gaia-argoui-select-label").html($(this).text());の後に、if文挿入で動くようになりました。
ありがとうございます。
江田篤史 様
お世話になっております。横から大変失礼致します。
スペースにドロップダウンを作成して、文字列(1行)にデータを保存するという実装方法とても感動致しました。
コードでこんなこともできるって、凄過ぎます。
今わたくしも同じような動きを探しておりますが、テーブルになった場合も同じ結果は可能でしょうか?
スペースはテーブルに入らなくて、なにかアドバイスいただけることは可能でしょうか?何卒よろしくお願い致します。
玲香様
お世話になっております。
実装不可能ではないですが、上記の実装と比較するとはるかに困難です。
仰る通りスペースを利用することはできないので、DOMを解析して変更することになります。
データ保存のために用意した「文字列 (1行)」フィールドがサブテーブル内の何列目にあたるかを数えて、その中身をドロップダウンに書き換えるのが比較的簡単かと思います。
ただ、他にも困難な点は多々あるのでその実装にこだわるべきかは見直しても良いかもしれません。
江田 篤史 様
いつも大変お世話になっております。
いきなり横から失礼いたします。
質問者様のとおり、
この処理を実行したいと考えております。
リストの項目を変える方法の記述の仕方が分からず困っております。
ご教授頂けると助かります。
よろしくお願いいたします。
松本一輝さん
お世話になっております。
最初のコメントの通り、表示非表示を切り替えるのであれば、kintone.app.record.setFieldShownで実装できます。
また、動的ドロップダウンのプラグインもご紹介しているので、よろしければご利用ください。
https://developer.cybozu.io/hc/ja/community/posts/900003008343
江田 篤史 さん
ご回答頂きましてありがとうございます。
kintone.app.record.setFieldShownは、第一引数にフィールドコード名を記述するかと思いますが、ドロップダウンの値も設定する事は可能なのでしょうか。
この場合ですと、フィールドコード名は同一になってしまうので、どのように区別したら良いか分からず、、、
本当に初心者で申し訳ありません。
ご教授頂けますと本当に助かります。
よろしくお願いいたします。
松本一輝さん
お世話になっております。
申し訳ございません。自分のコメントなのに勘違いしておりました。
選択肢を非表示となるとkintone APIでは実現できないですね。
DOM操作で無理やり実現することもできますが、kintoneの仕様変更により動作しなくなる可能性があるため、おすすめできる方法ではないです。
kintone.app.record.setFieldShownで実装する場合は、ドロップダウンフィールドを3つ用意すると良いです。
1つ目が選択肢に野菜と果物、2つ目が選択肢にトマトとピーマン、3つ目が選択肢にりんごとみかんを持つフィールドです。
1つ目のフィールドが野菜のときは3つ目のフィールドを非表示、1つ目のフィールドが果物のときは2つ目のフィールドを非表示とすると良いと思います。
江田 篤史 さん
お世話になります。
承知しました。
実装してみようと思います。
助かりました。
ありがとうございました。
かなり時間が経過してますが、質問です。
レコード編集画面で、保存すると、
都道府県フィールドの値がクリアされてしまします。
どのようにしたらクリアされないでしょうか?
よろしくお願いします。
江田篤史様
お世話になっております。
こちらの記述でドロップダウンではなく、例えば中国地方を選んだ時に広島と岡山を選択するような
都道府県を複数選択にすることは可能でしょうか?
ご教示いただけましたら幸いです。
よろしくお願いいたします。