Skip to content

Instantly share code, notes, and snippets.

@fjm
Last active February 13, 2018 14:03
Show Gist options
  • Save fjm/4276253 to your computer and use it in GitHub Desktop.
Save fjm/4276253 to your computer and use it in GitHub Desktop.
[MovableType - 管理画面で入力補助] Movable Typeの管理画面で、テキスト入力の入力補助をする前提:CMSContextプラグインを導入していること用途:- 外部ブログで登録した内容をひっぱりたいときとか- 入力したい候補がある程度一定とか(単にカスタムフィールドのselectにしたくないときとか) #movabletype

以下な感じのselectとかを出力させとく。 仮に/mt-select.htmlに設置するものとする。 (外部mtから書きだしてもいいし、あらかじめ準備しておいても)

<select>
  <option>[select]</option>
  <option>A</option>
  <option>B</option>
  <option>C</option>
</select>

CMSContextプラグインを使って「edit_entry.tmpl」をカスタマイズ。 以下のjs(jQuery文)を加える

var inputField = jQuery('#〜'); //入力対象のinputフィールド

inputField.each(function() {
  jQuery(this).after('<div style="padding-top:10px;"></div><span style="display:block; padding-top:5px; color:#f00; ">Select Type.</span>'); //入力欄下部に用意したselectをいれるdivを生成

  var rand = Math.random();
  jQuery(this).next().load('/mt-select.html?rand=' + rand, function() { // selectのhtmlを読み込む

    jQuery(this).find('select').css({
      'backgroundColor' : '#fff',
      'height' : 'auto',
      'width' : '100%'
    }).change(function() {
      var val = jQuery(this).find(':selected').text();
      if (val != '[select]') { //なんか選択されている時
        inputField.val(val);
      } else { //未選択状態の時はなにもしない
        inputField.val('');
      }
    });

    if ( inputField.val() ) {
      var val =  inputField.val();
      jQuery(this).find('option').each(function() {
        var text = jQuery(this).text();
        if ( val == text ) {
          jQuery(this).attr('selected','selected');
        }
      });
    }

  });
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment