Javascript JS:使回调返回另一个回调的输出
我正在使用Javascript 此插件有一个回调Javascript JS:使回调返回另一个回调的输出,javascript,jquery,callback,magicsuggest,Javascript,Jquery,Callback,Magicsuggest,我正在使用Javascript 此插件有一个回调selectionRenderer,允许您在插入选择之前更改其html 我想做的是,根据用户输入更改选择html 因此,按照我的设置方式,selectionRenderer回调打开一个引导模式,其中包含一个表单。然后,当表单提交时,将创建另一个submit回调 我不知道如何将submit回调中收集的数据传递到selectionRenderer回调中 $(function() { var modal = $('#exampleModal');
selectionRenderer
,允许您在插入选择之前更改其html
我想做的是,根据用户输入更改选择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
});
});
$(函数(){
var modal=$('exampleModal');
$(“#magicsuggest”)。magicsuggest({
selectionRenderer:函数(数据){
modal.modal('show');
变量颜色='红色';
modal.find(“#color form”).submit(函数(e){
e、 预防默认值();
color=$(this.find('#color input').val();
控制台。日志(颜色);
modal.modal('hide');
});
返回“”+data.name+“”;
},
allowFreeEntries:false,
数据:数据
});
});
如您所见,本例中的颜色
在submit
回调中收集,但由于该回调是异步触发的,因此无法将该数据传递给selectionRenderer
回调,因为该函数已返回
在一个完美的世界中,我显然可以让代码停止并等待回调继续,但由于它是一个插件,我不想分叉并破坏它 将打开模式的事件更改为选择事件,并在提交处理程序中查找最后一个标记以更改其颜色
var ms = $('#magicsuggest').magicSuggest({
selectionRenderer: function(data) {
return '<span class="my-tags">' + data.name + '</span>';
},
allowFreeEntries: false,
data: data
})
$(ms).on('selectionchange', function(e, m) {
modal.modal('show');
});;
$('#color-form').submit(function(e) {
e.preventDefault();
var color = $('#color-input').val();
$('.my-tags:last').css('color', color);
modal.modal('hide');
});
var ms=$(“#magicsuggest”).magicsuggest({
selectionRenderer:函数(数据){
返回“”+data.name+“”;
},
allowFreeEntries:false,
数据:数据
})
$(毫秒)。on('selectionchange',函数(e,m){
modal.modal('show');
});;
$(“#颜色表”)。提交(函数(e){
e、 预防默认值();
var color=$('#color input').val();
$('.my-tags:last').css('color',color);
modal.modal('hide');
});
那是。。。不可能。也没有什么意义。您希望在表单提交后,从定义提交事件的函数返回输入值?“在完美的世界中,我显然可以让代码停止并等待回调继续”erm。嗯,我的意思是,不,你不能在javascript阶段真正做到这一点。你为什么不在模式回调中设置跨度的颜色呢?@KevinB使用yield关键字使用ES6是可能的。我只是想换一种方式,因为它还没有得到很好的支持。@Nikita240呃,不,那不是一回事。您可以在生成器或异步函数中暂停逻辑,但这不会使代码正常工作,您仍然需要使用javascript的异步特性。