質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

5504閲覧

スペースに作成したドロップダウンの選択値を別の文字列に代入したい(Kintone,JavaScript)

adk

総合スコア12

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/10/26 02:50

編集2019/10/26 02:59

いつもお世話になっています。

現在、Kintone上でJavaScriptによるカスタマイズを行っています。

Kintoneの別アプリから情報を取得し、スペース上にドロップダウンを作ります。

このドロップダウンを選択した際、UI上の文字列に選択した文字を表示させたいのですがうまくいきません。

また、ドロップダウンを選択する前に、ドロップダウンに初期表示されている値を初期値として文字列に入れておく
動作も動きません。

どちらも「event.record」を使った式なので、この書き方がおかしいのが原因と思われるのですが、
どのように書けばいいのか分からないので、アドバイスを頂けませんでしょうか。

よろしくお願いいたします。

xml

1 function Kokyaku(event) { 2 var record = event.record; 3 // クエリ文の設定 4 var query = { 5 "app": 222,//別アプリの番号 6 }; 7 return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', query).then( 8 function(resp) { 9 var AppRecords = resp.records;//別アプリから取得したレコード 10 var lbKokyaku = document.createElement("div"); 11 lbKokyaku.appendChild(document.createTextNode('顧客')); 12 13 var ddKokyaku = document.createElement('select'); 14 ddKokyaku.id = 'dd_Kokyaku'; 15 ddKokyaku.style.width = "200px"; 16 ddKokyaku.style.height = "40px"; 17 18 19 if (document.getElementById('dd_Kokyaku') !== null) { 20 return; 21 } 22 //最初にプルダウンを、全てクリアする 23 for (var i=ddKokyaku.childNodes.length-1; i>=0; i--) { 24 ddKokyaku.removeChild(mySpaceField.childNodes[i]); 25 } 26 //プルダウンに項目入力 27 AppRecords.forEach(function(AppRecord,i){ 28 ddKokyaku.add( new Option(AppRecord['顧客略称']['value'], i+1 )); 29 if(i===0){ 30 //ここがうまくいかない:その1===================================================================== 31 event.record['顧客']['value']=AppRecord['顧客略称']['value']//文字列へ初期値入力 32 //ここがうまくいかない:その1終=================================================================== 33 } 34 }); 35 ddKokyaku.add( new Option( '手入力', AppRecords.length+1)); 36 37 //ここでスペースにラベル及びドロップダウン情報を挿入 38 kintone.app.record.getSpaceElement('Kokyaku').appendChild(lbKokyaku); 39 kintone.app.record.getSpaceElement('Kokyaku').appendChild(ddKokyaku); 40 41 dd_Kokyaku.onchange = function(event) 42 { 43 //ここがうまくいかない:その2==================================================================== 44 var record = event.record; 45 var selectedItem = this.options[ this.selectedIndex ]; 46 if(selectedItem.text==='手入力'){ 47 event.record['顧客'].disabled=false;// 手入力OK 48 event.record['顧客']['value']='';//文字列へ入力 49 }else{ 50 event.record['顧客'].disabled=true; // 手入力禁止 51 event.record['顧客']['value']=selectedItem.text;//文字列へ入力 52 } 53 //ここがうまくいかない:その2終==================================================================== 54 } 55 return event; 56 }).catch(function(e) { 57 alert("レコードの取得でエラーが発生しました - error: " + e.message); 58 return false; 59 }); 60 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

下記HPをもとに解決いたしました。
https://note.mu/worklog_jumpei/n/nb7a9aae77f99

下記のように書くとよいのですね。

dropdown.on('change', function(value) {
var record = kintone.app.record.get();
if(value==='手入力'){
record['record']['顧客']['disabled'] =false;//手入力OK
record['record']['顧客']['value'] ='';
}else{
record['record']['顧客']['disabled'] =true;//手入力OK
record['record']['顧客']['value'] = value;
}
kintone.app.record.set(record);
});

投稿2019/10/26 05:10

adk

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問