web-dev-qa-db-ja.com

ウィジェットのカスタマイザでの変更が「保存して公開」をトリガーしない

私はいくつかのウィジェットカスタマイザをフレンドリーにしているので、それらはカスタマイズページで働き、ウィジェットプレビューをサポートします。通常、ウィジェットを更新すると保存ボタンが使用可能になり、「保存して公開」に変わります。

しかし、私はウィジェットのテキスト入力にjavascript(token input http://loopj.com/jquery-tokeninput/ - )を使用しているので、ユーザーはオプションのリストから素敵な方法で選択できます。問題は、このフィールドを更新しても保存および公開のオプションが起動されないため、変更を保存する方法がないことです。

誰かアイデアがありますか?

基本フォームフィールドは次のとおりです。

<input name="the_token_input" id="" class="the_token_input" value="This will be the token input" /> 

JavaScriptトークンの入力を初期化すると、入力の役割を果たすまったく新しい要素が作成されます。これは次のようなものです。

<ul class="token-input-list">
  <li class="token-input-token">Choice 1</li>
  <li class="token-input-token">Choice 2</li>
  <li class="token-input-token">Choice 3</li>
</ul>

変更を加えても元の入力フィールドには影響しないので、ページが何も変更されていないと思われるのはそのためです。

5
danbrown

私は私のカスタムウィジェットの一つで同様の問題を経験していました。動的に挿入されたフィールド値はウィジェットフォームを更新させることはないようです。動的な値を挿入するjsに以下を追加することにしました。

$(input).trigger('change');

入力は更新しているフィールドです。

これを行うより良い方法があるかどうかわからないが、これは私のために働いています。

6
SkyShab

change要素でinputイベントを必ずトリガーしてください。そうでなければ、カスタマイザはそれがウィジェットの設定で更新される必要がある更新された値を持っていることを知りません。

1
Weston Ruter