こんにちは。
職人見習いの齋藤です。

ある案件でMT5の記事編集画面に用意したカスタムフィールドに
入力チェックを加える必要があったので、MTAppjQuery プラグインをインストールし、
form の submit()(更新ボタン押下時)に入力内容をチェックし、
問題があった場合は return false で submit をキャンセルさせ、
入力内容を修正するまで submit を無効にするという処理を追加しました。

実際に動作を確認してみると、入力チェックで submit をキャンセルするという動作は
問題なく行われたのですが、キャンセル後に再度更新ボタンを押下しても
submit が動作しないという現象が発生しました。
特にスクリプトでのエラーも見られず、その他の機能は問題なく動作していたのですが、
更新ボタン右のプレビューボタン(同じくsubmit)も動作しなくなっていました。

処理のタイミングや内容等を変更してみてもなかなか改善しなかったのですが、
下記の方法を試してみたところ、現象を回避することができました。

  • 処理をform.submit()ではなく
    $(“カスタムフィールド名のid”).blur(function(){~にする
  • submit を無効にするのではなく、
    更新ボタンを hide() で非表示にする(今回はプレビューボタンも一緒に非表示に)
  • 入力内容を修正し、問題ない場合は
    更新ボタンを show() で表示する(プレビューボタンも同様)

もし同じような現象が起きた際には上記の方法を試してみてください。

動作としては目的のものが実現できましたが、現象の根本的な解決にはなっていないので
引き続き原因を調査したいと思います。

※この記事は、なかの人(Iret_msaito)が書いています。