私はJavaScriptをmagicsuggest pluginで使用しています。JS:コールバックに別のコールバックの出力を返します。
このプラグインには、挿入する前に選択範囲のhtmlを変更できるコールバックselectionRenderer
があります。
私がしようとしているのは、ユーザーの入力に基づいてその選択htmlを変更することです。
私はそれを設定しているので、selectionRenderer
コールバックは内部にフォームを持つブートストラップモーダルを開きます。そのフォームが送信されると、別のsubmit
コールバックが作成されます。
submit
コールバックで収集されたデータをコールバックselectionRenderer
コールバックに渡す方法がわかりません。
$(function() {
var modal = $('#exampleModal');
$('#magicsuggest').magicSuggest({
selectionRenderer: function(data){
modal.modal('show');
var color = 'red';
modal.find('#color-form').submit(function(e) {
e.preventDefault();
color = $(this).find('#color-input').val();
console.log(color);
modal.modal('hide');
});
return '<span style="color: '+color+';">' + data.name + '</span>';
},
allowFreeEntries: false,
data: data
});
});
あなたが見ることができるように、この例ではcolor
はsubmit
コールバックで収集されますが、そのコールバックが非同期的に解雇されているので、selectionRenderer
コールバックにそのデータを渡す方法はありません、その関数はすでに返されているためです。
完璧な世界では、私は明らかにコードを停止してコールバックを続行するのを待つことができますが、プラグインなのでフォークしないでください。選択イベントへと提出ハンドラ内でのモーダルを開くイベントがそれを変更する最後のタグを探し
です。全く意味がありません。フォームがサブミットされた後、サブミット・イベントを定義する関数から入力の値を戻したいとしましたか? –
*「完璧な世界では、明らかにコードを停止させ、コールバックが継続するのを待つことができます」* erm。まあ、私は、いいえ、あなたは本当にjavascriptの期間でそれを行うことはできませんことを意味します。 –
モーダルコールバックでスパンの色を設定してみませんか? –