新規投稿
フォローする

入力方法制御

フィールドによって入力方法の制御など出来ませんでしょうか? 例えば、パソコンであれば半角英数、全角ひらがなをフィールドによって切り替えたいです。javascript等記述で対応出来るのであればぜひ教えて頂けると助かります。
0

2件のコメント

Avatar
江田篤史

gsc-hnd-dad様

お世話になっております.

submit時にバリデーションチェックするのが一般的かと思います.
また,inputmode属性を用いるとデフォルトキーボードの制御も可能です.(ただし,ieなどでは動作しません.)

(function() {
  "use strict";
  //フィールド情報
  var fields = [{
    code: '文字列__1行_', //フィールドコード
    label: '文字列 (1行)', //フィールド名
    pattern: /^[ぁ-んー ]*$/, //入力許可する正規表現パターン(https://murashun.jp/blog/20190215-01.html)
    message: '全角ひらがなのみ入力できます.', //エラーメッセージ
    inputmode: 'text', //キーボードのモード(https://developer.mozilla.org/ja/docs/Web/HTML/Global_attributes/inputmode)
  }, {
    code: '数値',
    label: '数値',
    pattern: /^[A-Za-z0-9]*$/,
    message: '半角英数のみ入力できます.',
    inputmode: 'numeric',
  }]
  //バリデーションチェック
  kintone.events.on([
    'app.record.create.submit',
    'app.record.edit.submit',
  ], function(event){
    fields.forEach(function(field){
      if(event.record[field.code].value && !event.record[field.code].value.match(field.pattern)){
        event.record[field.code].error = field.message;
      }
    });
    return event;
  });
  //デフォルトキーボード制御
  kintone.events.on([
    'app.record.create.show',
    'app.record.edit.show',
  ], function(event){
    var getFieldElement = function(fieldName){
      return [].find.call(document.getElementsByClassName('control-gaia'), function(element){
        return element.getElementsByClassName('control-label-gaia')[0].innerText === fieldName;
      });
    };
    fields.forEach(function(field){
      getFieldElement(field.label).getElementsByTagName('input')[0].setAttribute('inputmode', field.inputmode);
    });
  });
})();
1
Avatar
gsc-hnd-dad

早速ご回答ありがとうございます。

やりたい事としては、デフォルトキーボートの制御になるかと思います。

使用する箇所のフィールドとしては、【開始時刻】【終了時刻】【タスク】(テーブル)となっており、時刻を入力の際PCですと30分単位ですので、半角モードにしたい。

といったところです。

ですのでデフォルトキーボード制御の方法詳しくご教授頂けると幸いです。

gsc-hnd-dadにより編集されました
0
サインインしてコメントを残してください。