我使用FullCalendar并在点击日期时触发提示。因此,如果我在9月30日点击,我会收到两个提示框。
我目前在javascript中使用以下代码收到两个变量:
var title = prompt('Job Title:');
var project = prompt('Project Title:');
我尝试使用UIKIT modal component创建一个带有字段的模态来获取变量(而不是两个单独的提示弹出窗口)。
我可以显示模态并禁用提示,但fullcalender功能继续运行。它无法找到var标题并引发错误:
未捕获的ReferenceError:标题未定义
提示暂停代码处理,直到提供变量。我的模态没有。
使用模态替换提示的正确方法是什么。什么代码最好用于暂停JavaScript的运行,直到按下保存按钮并将变量添加到字段?
以下是有关所用代码的更多详细信息:
我用以下代码替换了上面的JS代码:
$.UIkit.modal('#workcal-add-modal').show();
并拥有以下模式:
<!-- This is the modal -->
<div id="workcal-add-modal" class="uk-modal">
<div class="uk-modal-dialog">
<a class="uk-modal-close uk-close"></a>
<form class="uk-form">
<fieldset data-uk-margin>
<input type="text" placeholder="project Name" id="wc_add_project_title">
<select>
<option>Project 1</option>
<option>Project 2</option>
</select>
<button class="uk-button">Save</button>
</fieldset>
</form>
</div>
</div>
由于
答案 0 :(得分:0)
您需要创建基于promise
的方法,在其中创建承诺,并在用户点击save
时解决,或在用户取消或关闭对话框时拒绝。
答案 1 :(得分:0)
我的猜测是你在函数中创建这些变量然后结束,所以存储的变量被释放。
在脚本的顶部,创建两个变量。
title = prompt('Job Title:');
project = prompt('Project Title:');
当您的代码需要填充这些变量时,请使用代码:
title
稍后,当您的代码需要使用它们时,只要您在此之前不使用它们,它们就会使用您想要的值进行初始化。
如果没有更多代码,并且要查看它们的创建和使用位置,很难说在您尝试使用它们时为什么{{1}}未定义。它可能是范围或者在您填充它们时,不会像在初始时传入闭包的情况那样创建日历。
答案 2 :(得分:0)
毕竟我解决了这个问题。
我只是将剩余的javascript包装在一个只在单击保存按钮时触发的函数中。
$("#modal_save").on("click", function(){ ... all the code here ... });