前提・実現したいこと
初めての投稿になります。
Javascriptはまだ半月程度の実務経験で、その他の言語もJavaを一週間くらいしか
実務経験をしたことがない、初心者です。
現在javascriptで、テキストボックスに入力した複数キーワードでレコードを
検索する機能を実装したいと思っております。
実装はkintoneのjavascriptカスタマイズで行います。
キーワードはカンマ区切りで、テキストボックスフィールド(client)に一致したキーワードで該当のレコードを検索したいです。
内容)
①テキストボックスに 「aaa,bbb」と入力
②レコードのフィールド「テスト」に①で入力された値が入っていたら、そのレコードを検索する
③条件はor条件とする。
現在は1つのキーワードのみ、検索できるようになってますが、それを
複数の場合でも検索するようにしたいのです。
後でも説明しますが、変数queryに入ってくる条件でレコードの検索を
行っており、今回の対応用のqueryを作成しているのですが、上手く
いっていない状況です。
発生している問題・エラーメッセージ
Chromeでデバックをしておりますが、「Uncaught SyntaxError: Unexpected string」 と表示されています。正しいqueryを作成できていないので、このエラーが出ています。
該当のソースコード
簡単な概要
①変数client はテキストボックスのフィールドを指しており、ここにキーワードを入力する。
②変数 nを定義し、入力された文字列をカンマ区切りにし、何個のキーワードがあるのかを出す。
③n=1(キーワードが1個なら既存の処理にする)
④n>1ならば、複数キーワードでレコード検索したい(今回の対応)
⑤「テスト」とはレコードの一覧画面に表示される時のカラムのフィールドを指す。
このフィールドに「aaa」という値が入っているレコードが存在し、テキストボックスに「aaa」と入力するとそのレコードが検索できます。
⑥100個もキーワードは入力されることはないですが、ループカウンターの上限を100としています。
Javascript
1 2 3if(client != ''){ 4 console.log(client); 5 6 if(query==''){ 7 8 var resArray = client.split(","); 9 console.log(resArray); 10 11 var n = resArray.length; 12 console.log(n); 13 var data = client.split("," , n); 14 15 console.log(data); 16 17 // テストの検索キーワードが1つの場合 18 // これは既存の処理 19 if(n == 1){ 20 query = query + 'テスト like "' + client + '"'; 21 console.log(query); 22 } 23 24 // テストの検索キーワードが2つ以上の場合 25 // 今回改修したい処理 26 if(n > 1){ 27 var i = 0; 28 29 query = 'テスト like "' + data[0] + '"'; 30 console.log(query); 31 32 while(i != n){ 33 34 query = query + ' or テスト like "' + data[i+1]'"'; 35 36 i++; 37 if (i == 100) 38 break; 39 } 40 console.log(query); 41 42 } 43 44 }else{ 45 query = query + ' and テスト like "' + client + '"'; 46 } 47} 48 49
試したこと
キーワードを2個、3個入力した時に検索できる所までは来ています。
今回はn個のキーワードが入力されることを想定したケースを作成したいです。
例えば3個の場合は以下のソースで現在検索できています。
この場合だと3と決め打ちしてるので3個まで検索できています。(2個も拾えてます)
if(client != ''){
console.log(client);
if(query==''){ var data = client.split("," , 3); console.log(data); query = query + '(テスト like "' + data[0] + '" ' + ' or テスト like "' + data[1] + '" ' + ' or テスト like "' + data[2] + '")'; console.log(query); }else{ query = query + ' and テスト like "' + client + '"'; }
}
この場合console.logでqueryの値を確認すると、
テスト like "aaa" or テスト like "bbb" or テスト like "ccc"
となっており、このqueryに基づいて条件のレコードを検索しています。
n個になればorがどんどん増えていきますが、その連結の仕方で悩んでいます。
補足情報(FW/ツールのバージョンなど)
kintoneのjavascriptカスタマイズで機能を実装する
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/13 04:11
2018/02/13 04:15