大西 佑太様
ご教授ありがとうございます。返信が遅くなってしまい申し訳ありません。
指摘頂いた箇所を訂正しましたが、動作に変わりありませんでした。
以下コード全文を記載します。お時間の許す際に拝見して頂けたらと思います。
よろしくお願いいたします。
// 設定値
const FIELD_CODE1 = “項目”;
const FIELD_CODE1_NAME = “項目”;
const AND_OR = “and”; // 必ず小文字
const FIELD_CODE2 = “点数”;
const FIELD_CODE2_NAME = “点数”;
// 一覧表示のタイミングで実行
(function () {
“use strict”;
kintone.events.on(“app.record.index.show”, function (event) {
// GET引数に格納された直前の検索キーワードを取得して再表示する
varresult= {};
varquery=window.location.search.substring( 7 ); // URL固定部分(?query=)は無視
// クエリ検索条件の区切り記号 (and/or) で分割
varparameters=query.split( AND_OR );
// フィールドコード名と検索キーワードに分割する
for( vari=0; i<parameters.length; i++ ){
varelement=parameters[i].split( ‘like’ );
varparamName=decodeURIComponent( element[0] );
varparamValue=decodeURIComponent( element[1] );
// スペースと""をtrimして、文字列だけにしてから、配列に格納
result[paramName.replace(/^\s+|\s+$/g, “”)] =paramValue.replace(/^[\s|"]+|[\s|"]+$/g, “”);
}
// 検索キーワードその1
varsearch_word1=document.createElement(‘select’);
search_word1.onkeypress=function(e) {
if (e.keyCode&&e.keyCode==13) {
keyword_search();
}
}
if(result[FIELD_CODE1] !=undefined){
search_word1.value=result[FIELD_CODE1]; // GET引数に、直前の検索キーワードがあったら格納しておく
}
// 取得したレコードに設定されたフィールド値をoptionをに設定する
var field1 = record[‘項目’].value;
var option1 = document.createElement(‘option’); // option作成
option1.setAttribute(‘value’, field1); // optionのvalueを設定
option1.innerHTML = field1; // optionの表示名を設定
search_word1.appendChild(option1); // selectにoptionを設定
// 検索キーワードその2
varsearch_word2=document.createElement(‘select’);
search_word2.onkeypress=function(e) {
if (e.keyCode&&e.keyCode==13) {
keyword_search();
}
}
if(result[FIELD_CODE2] !=undefined){
search_word2.value=result[FIELD_CODE2]; // GET引数に、直前の検索キーワードがあったら格納しておく
}
// 取得したレコードに設定されたフィールド値をoptionをに設定する
var field2 = record[‘点数’].value;
var option2 = document.createElement(‘option’); // option作成
option2.setAttribute(‘value’, field2); // optionのvalueを設定
option2.innerHTML = field2; // optionの表示名を設定
search_word1.appendChild(option2); // selectにoptionを設定
// 検索ボタン
varsearch_button=document.createElement(‘button’);
search_button.innerHTML=‘検索’;
search_button.onclick=function () {
keyword_search();
};
// キーワード検索の関数
functionkeyword_search(){
varkeyword1=search_word1.value;
varkeyword2=search_word2.value;
varstr_query=‘?query=’+FIELD_CODE1+’ like “‘+keyword1+’” ’
+AND_OR+’ ‘+FIELD_CODE2+’ >= “‘+keyword2+’”';
if(keyword1==“”&&keyword2==“”){
str_query=“”;
}else if(keyword1 != “” && keyword2 == “”){
str_query=‘?query=’+FIELD_CODE1+’ like “‘+keyword1+’”’
}else if(keyword1 == “” && keyword2 != “”){
str_query=‘?query=’+FIELD_CODE2+’ >= “‘+keyword2+’”’
}
// GET変数を使って、検索結果へジャンプ!
document.location=location.origin+location.pathname+str_query
}
// キーワード入力部品を、kintoneヘッダ部分に埋め込む(重複を避けるため、最初に要素をクリアしておく)
varaNode=kintone.app.getHeaderMenuSpaceElement()
for (vari=aNode.childNodes.length-1; i>=0; i–) {
aNode.removeChild(aNode.childNodes[i]);
}
// 検索窓の表示ラベル設定
varlabel=document.createElement(‘label’);
label.appendChild(document.createTextNode(FIELD_CODE1_NAME));
label.appendChild(search_word1);
label.appendChild(document.createTextNode(FIELD_CODE2_NAME));
label.appendChild(search_word2);
label.appendChild(document.createTextNode(’ '));
label.appendChild(search_button);
kintone.app.getHeaderMenuSpaceElement().appendChild(label);
returnevent;
});
})();