我使用FullCalendar并在单击日期时触发提示。如果我在9月30日点击,我会得到两个提示框。
我目前在javascript中使用以下代码接收两个变量:
var title = prompt('Job Title:');
var project = prompt('Project Title:');
我试图使用UIKIT模态组件创建一个单一的模态与字段来获取变量(而不是两个单独的提示弹出)。
我可以显示模式并禁用提示,但是fullcalender功能继续运行。它找不到var title并抛出错误:
Uncaught ReferenceError: title is not defined
提示符暂停代码的处理,直到提供变量为止。我的模态没有。
用模态代替提示符的正确方法是什么?什么代码最适合用于暂停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>
谢谢
你需要创建一个基于promise
的方法,在那里你创建一个承诺,并在用户点击save
时解决它,或者在用户取消或关闭对话框时拒绝。
请看:https://www.promisejs.org/
我猜你是在一个函数中创建这些变量,然后结束,所以存储的变量被释放。
在脚本的顶部,创建两个变量:
var title;
var project;
当您的代码需要填充这些变量时,请使用以下代码:
title = prompt('Job Title:');
project = prompt('Project Title:');
之后,当你的代码需要使用它们时,它们将被初始化为你想要的值,只要你在那之前不使用它们。
如果没有更多的代码,看看它们是在哪里被创建和使用的,很难告诉为什么title
在你试图使用它们的时候是未定义的。它可能是作用域,也可能是在填充它们的时候,日历不是像在初始化时传入闭包那样创建的。
我还是很简单地解决了这个问题。
我只是将剩下的javascript包装在一个函数中,该函数只在点击保存按钮时触发。
$("#modal_save").on("click", function(){ ... all the code here ... });