使用UIKIT模态获取变量(而不是提示符)

Using UIKIT Modal to get Variables (instead of prompt)

本文关键字:提示符 UIKIT 模态 获取 变量 使用      更新时间:2023-09-26

我使用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 ... });